需求如下,把异常数据从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. 关于下载DynamicDataDisplay.dll后被默认锁定的问题

    问题:命名空间 d3:“http://research.microsoft.com/DynamicDataDisplay/1.0”不存在ChartPlotter元素 原因:下载DynamicDataD ...

  2. C# ICSharpCode.SharpZipLib.dll文件压缩和解压功能类整理,上传文件或下载文件很常用

    工作中我们很多时候需要进行对文件进行压缩,比较通用的压缩的dll就是ICSharpCode.SharpZipLib.dll,废话不多了,网上也有很多的资料,我将其最常用的两个函数整理了一下,提供了一个 ...

  3. php中的常用数组函数(三)(获取数组交集的函数们 array_intersect()、array_intersect_key()、array_intersect_assoc()、array_intersect_uassoc()、array_intersect_ukey())

    这5个获取交集的函数 有 5个对应的获取差集的函数.我是链接. array_intersect($arr1, $arr2); //获得数组同键值的交集 array_intersect_key($arr ...

  4. JAVa中进制之间的转化方法

    public class Code { public static void main(String[] args) throws Exception{ // TODO Auto-generated ...

  5. 【GOF23设计模式】适配器模式

    来源:http://www.bjsxt.com/ 一.[GOF23设计模式]_适配器模式.对象适配器.类适配器.开发中场景  适配器模式  笔记本电脑只有USB接口,新买的键盘是PS2接口的,需要用适 ...

  6. 利用jQuery的淡入淡出实现轮播器

    基本原理:将所有图片绝对定位在同一位置,透明度设为0,然后通过jQuery的淡入淡出实现图片的切换效果: 但我在使用fadeIn淡入时却无效果,最后只能使用fadeTo实现,求大神指教 HTML: & ...

  7. C# Web Api 上传文件

    一. 使用默认方法上传文件: 1.Action: /// <summary> /// 上传文件 使用上传后的默认文件名称 /// 默认名称是BodyPart_XXXXXX,BodyPart ...

  8. echarts 地图图

    效果如下图: 1.下载echarts对应包: http://echarts.baidu.com/ 2.前端页面: <!DOCTYPE html> <html xmlns=" ...

  9. SharePoint中Event Handler的触发

    一直以来对于Event Handler的感觉就是:添加.编辑和删除动作之前和动作之后,我们在SharePoint系统中可以做的一些事情 不过在最近处理的一个问题中,发现它在触发时机上出了一点问题   ...

  10. Nunit在VS2010加载不了程序集的解决办法

    本机环境: Win7 64位 旗舰版 VS2010 Nunit2.6.3 故障重现步骤: 1.在启动外部应用程序中增加C:\Program Files (x86)\NUnit 2.6.3\bin\nu ...