需求如下,把异常数据从sqlserver数据库中取出来,然后导入到xls中去,然后再发邮件给用户,把xls作为附件发送。

需要的示例数据表: 

/*

create table abnormaldata(rowid bigint , rowname nvarchar(20) ,rowvalue nvarchar(100));

insert into abnormaldata(rowid,rowname,rowvalue) values(1,'studentname','studentA');

insert into abnormaldata(rowid,rowname,rowvalue) values(1,'age','24');

insert into abnormaldata(rowid,rowname,rowvalue) values(2,'studentname','studentB');

insert into abnormaldata(rowid,rowname,rowvalue) values(2,'age','25');

insert into abnormaldata(rowid,rowname,rowvalue) values(3,'studentname','studentC');

insert into abnormaldata(rowid,rowname,rowvalue) values(3,'age','26');

insert into abnormaldata(rowid,rowname,rowvalue) values(4,'studentname','studentD');

insert into abnormaldata(rowid,rowname,rowvalue) values(4,'age','27');

insert into abnormaldata(rowid,rowname,rowvalue) values(5,'studentname','studentE');

insert into abnormaldata(rowid,rowname,rowvalue) values(5,'age','28');

insert into abnormaldata(rowid,rowname,rowvalue) values(6,'studentname','studentF');

insert into abnormaldata(rowid,rowname,rowvalue) values(6,'age','29');

*/

我的机器环境是win7 64bit,默认会报如下的错误,是因为oledb没有64位的driver.错误的提示非常明显,而且也指出了如何改正,就是在32位下运行。

[Connection manager "Excel Connection Manager"] Error: The requested OLE DB provider Microsoft.Jet.OLEDB.4.0 is not registered. If the 64-bit driver is not installed, run the package in 32-bit mode. Error code: 0x00000000.

An OLE DB record is available. Source: "Microsoft OLE DB Service Components" Hresult: 0x80040154 Description: "Class not registered".

当然,这只是在开发了阶段debug的选 项,如果我们使用jobagent进行调用的时候,有一个类似的选项可以进行选定。

但如果我们是使用第三方的调度工具,把package写在一个batch文件里面使用Dtexec进行调用的时候,我们则需要注意了。

我们默认在cmd实用程序中调用的dtexec与你的OS版本是一致的,譬如你的os是64位的,一般情况下你调用的则是64位的。

这样仍是会报错的,而你直接双击package跳出来的执行应用程序DTEXECUI默认则是32位的,所以你可以执行成功。

需要注意的是如果是使用batch调用,则需要指定x86文件夹下的32位实用程序。你需要在batch file中这样写:

"C:\Program Files (x86)\Microsoft SQL Server\110\DTS/Binn\DTEXEC.EXE" /FILE "\"C:\Users\Student\Documents\Visual Studio 2010\Projects\Integration Services Project1\Integration Services Project1\Excel demo.dtsx\"" /CHECKPOINTING OFF /REPORTING EWCDI

因为我的需求是需要把这个xls作为附件通过邮件发送出去的,我原来直接使用send mail task.来做这件事,当我的xls达到3M的时候,基本上就超时了,因为send mail task默认是100秒,如果发不出去,就报超时的错误,而且不可更改这个参数。

所以我就使用了script task然后通过c#代码来做这件事,但是需要指定一下clienttimeout指定个合适的值,注意它是以millionsencod为基准的。

剩下的就是清除xls中的内容,以供下一次使用。可以使用drop table '…'注意不是delete. 这个drop 不会把sheet去除,只是清除所有的内容,所以需要使用create table再做一件schema.

完整的SSIS package是这样的:fx是因为我使用了一个变量来判断rowcount是否大于0,否则就不做下面的事了。

Excel demo in SSIS的更多相关文章

  1. excel 导入数据库 / SSIS 中 excel data source --64位excel 版本不支持-- solution

    当本地安装的excel(2013版) 是64-bit时:出现的以下两种错误 解决: 1. excel 导入数据库 , 如果文件是2007则会出现:“The 'Microsoft.ACE.OLEDB.1 ...

  2. linux poi生成excel demo调试附调用代码

    1.下载poi-3.9-20121203.jar包 2.java code package com.userpackage; import java.io.FileOutputStream; impo ...

  3. XLSX.js 导出Excel demo

    GitHub:https://github.com/SheetJS/js-xlsx 一个js操作Excel的工具,如下代码,很方便的就将json数据导出为Excel文件. 使用示例: //json 数 ...

  4. 在SSIS 的 64 位版本中不支持 Excel 连接管理器

    Microsoft sql server 2008 R2——> SQL SERVER Business Intelligence Development Studio 使用EXCEL数据源或目标 ...

  5. 关于SSIS批量抽取Excel文件报0x80004005错误的解决办法

    原文:关于SSIS批量抽取Excel文件报0x80004005错误的解决办法 标题: Microsoft Visual Studio ------------------------------ Pa ...

  6. 在SSIS 的 64 位版本中不支持 Excel 连接管理器[转]

    Microsoft sql server 2008 R2——> SQL SERVER Business Intelligence Development Studio 使用EXCEL数据源或目标 ...

  7. VB操作EXCEL文件

    用VB操作Excel(VB6.0)(整理) 首先创建Excel对象,使用ComObj:Dim ExcelID as Excel.ApplicationSet ExcelID as new Excel. ...

  8. Microsoft.Office.Interop.Excel的用法以及利用Microsoft.Office.Interop.Excel将web页面转成PDF

    1.常见用法           using Microsoft.Office.Interop.Excel; 1)新建一个Excel ApplicationClass ExcelApp = New A ...

  9. Microsoft.Office.Interop.Excel的用法

    1)ApplicationClass ExcelApp = New ApplicationClass(); 2) 更改 Excel 标题栏: ExcelApp.Caption := '应用程序调用 M ...

随机推荐

  1. LeetCode126:Word Ladder

    题目: Given two words (start and end), and a dictionary, find the length of shortest transformation se ...

  2. 才知道百度也提供了智能DNS服务 - 加速乐

    http://jiasule.baidu.com/ 智能DNS 依托百度多年积累的高精度DNS识别库,平均只需5秒全球DNS服务器全部生效,百度蜘蛛1秒生效.抗攻击.无限解析记录,免费支持电信.联通. ...

  3. java操作小技巧,遇到过的会一直更新,方便查找

    1.<c:forEach>可以循环map array List 2.操纵数组,不知道类型的情况下,不需要判断数组类型,直接用反射,arrays.Class.isArrays() 获取数组长 ...

  4. Windows程序==>>使用ListView控件展示数据

    使用ListView控件展示数据 01.ImageList控件 1.了解了解         属性 说明 Images 储存在图像列表中的所有图像 ImageSize 图像列表中图像的大小 Trans ...

  5. Angularjs,WebAPI 搭建一个简易权限管理系统 —— 基本功能演示(二)

    目录 前言 Angularjs名词与概念 Angularjs 基本功能演示 系统业务与实现 WebAPI项目主体结构 Angularjs 前端主体结构 基本功能演示(二) 非常抱歉这个月实在太忙,一直 ...

  6. 使用PHP搭建书虫网站

    年前开始了一个新项目,书虫项目的启动,项目组里面我是负责搭建网站的.以前听说过PHP的大名,就是没怎么看过,只能从一无所知开始了. 来自PHP手册的介绍:PHP, 即“PHP: Hypertext P ...

  7. 初学Node(二)package.json文件

    package.json简介 package.json在Node项目中用于描述项目的一些基本信息,以及依赖的配置,一般每一个Node项目的根目录下都有一个package.json文件. 在项目的根目录 ...

  8. Opengles 管线编程介绍

      OpenGL ES 2.0可编程管道 上图橙色部分(Vertex Shader和Fragment Shader)为此管道的可编程部分.整个管道包含以下两个规范: 1)         OpenGL ...

  9. linux中fork()函数详解(原创!!实例讲解) (转载)

     一.fork入门知识 一个进程,包括代码.数据和分配给进程的资源.fork()函数通过系统调用创建一个与原来进程几乎完全相同的进程, 也就是两个进程可以做完全相同的事,但如果初始参数或者传入的变量不 ...

  10. C安全编码--数组

    建议和规则 建议: 理解数组的工作方式 获取数组的长度时不要对指针应用sizeof操作符 显示地指定数组的边界,即使它已经由初始化值列表隐式地指定 规则: 保证数组索引位于合法的范围内 在所有源文件中 ...