C#调用SSIS包需要引用两个DLL 。(具体位置在C盘搜索,MSDN和百度提供的路径都不太正确)

Microsoft.SQLServer.ManagedDTS.dll

Microsoft.SqlServer.Dts.DtsClient.dll   

这是MSDN上的例子 https://msdn.microsoft.com/zh-cn/library/ms136025%28v=sql.120%29.aspx

MSDN上的例子只有读取一个DataReader的做法,并且该方法不能加事件。

下面是读取多个DataReader的代码

          string pkgLocation = @"Package1.dtsx"; //包路径
DtsConnection dtsConnection;
DtsCommand dtsCommand;
IDataReader dtsDataReader = null;
Package pkg;
Application app;
DataSet ds = new DataSet();
app = new Application();
pkg = app.LoadPackage(pkgLocation, null); string dataReaderName = "DataReaderDest"; dtsConnection = new DtsConnection();
{
dtsConnection.m_pkg = pkg;
// dtsConnection.ConnectionString = string.Format(@"/FILE ""{0}""",pkgLocation); //另一种连接方式。如果用Package则可以加事件
// dtsConnection.Open();
} dtsCommand = new DtsCommand(dtsConnection);
dtsCommand.CommandText = dataReaderName; List<string> reader = new List<string>() {"DataReaderDest", "DataReaderDest2"}; //DataReader输出名称 集合 List<IDataReader> readers = new List<IDataReader>();
foreach (var cmdtext in reader)
{
dtsCommand.CommandText = cmdtext;
dtsDataReader = dtsCommand.ExecuteReader(CommandBehavior.Default);
readers.Add(dtsDataReader);
Console.WriteLine("读取{0}", cmdtext);
} foreach (var dataReader in readers)
{
try
{
DataTable dt = new DataTable();
dt.Load(dataReader);
Console.WriteLine("数据行{0}", dt.Rows.Count);
ds.Tables.Add(dt);
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
finally
{
dataReader.Close();
}
} dtsCommand.Dispose();
return ds;

上面的代码能读取1个以上DataReader但是读取第一个后需要等待30秒才能读取第二个,会在下面的代码卡着

dtsDataReader = dtsCommand.ExecuteReader(CommandBehavior.SingleResult);

原因是包中DataReader的ReadTimeout默认为30000毫秒 设为100毫秒就好了。每一个DataReader都要设置。

C#调用SSIS包及读取DataReader目标的更多相关文章

  1. c#直接调用ssis包实现Sql Server的数据导入功能

    调用ssis包实现Sql Server的数据导入功能网上已经有很多人讨论过,自己参考后也动手实现了一下,上一次笔者的项目中还用了一下这个功能.思前想后,决定还是贴一下增强记忆,高手请54. 1.直接调 ...

  2. 在SQL Server中使用命令调用SSIS包

    在SQL Server中可以使用dtexec命令运行SSIS包(2005以上版本),当然也可以通过系统过程:xp_cmdshell调用dtexec运行SSIS包. 具体操作步骤如下: 1.首先,当然是 ...

  3. c# 代码调用ssis包

    https://docs.microsoft.com/en-us/sql/integration-services/run-manage-packages-programmatically/loadi ...

  4. [转]SSIS包的调用方式

    本文转自:http://www.cnblogs.com/lijun4017/archive/2008/12/04/1347701.html 编写简单SSIS包光看MSDN应该就问题不大了,最近几天几个 ...

  5. c#控制台調用SSIS包互传值

    有时候不仅仅需要在内部执行package包,多数情况下,是需要在外部进行调用,比如,需要一个批处理或者控制台程序进行外部调用SSIS包,而往往这个包所配置的连接字符串是经过加密处理的,所以当外部调用S ...

  6. 效率最高的Excel数据导入---(c#调用SSIS Package将数据库数据导入到Excel文件中【附源代码下载】) 转

    效率最高的Excel数据导入---(c#调用SSIS Package将数据库数据导入到Excel文件中[附源代码下载])    本文目录: (一)背景 (二)数据库数据导入到Excel的方法比较   ...

  7. java 从jar包中读取资源文件

    在代码中读取一些资源文件(比如图片,音乐,文本等等),在集成环境(Eclipse)中运行的时候没有问题.但当打包成一个可执行的jar包(将资源文件一并打包)以后,这些资源文件找不到,如下代码: Jav ...

  8. (转)java 从jar包中读取资源文件

    (转)java 从jar包中读取资源文件 博客分类: java   源自:http://blog.csdn.net/b_h_l/article/details/7767829 在代码中读取一些资源文件 ...

  9. 一步一步部署SSIS包图解教程

    本文就SQL统计分析SSIS包的部署进行一次详细的部署图解教程,Sql Server Integration Services 提供了非常简单的部署工具,利用这些工具可以方便地将包文件(*.dtsx) ...

随机推荐

  1. html的下拉框的几个基本使用方法

    尽管使用EXT开发了一段时间,可是自己认为我对javascript还是不是非常熟,所以边看书边做小样例 给自己以后用到的时候查看下,都是非常主要的东西,对刚開始学习的人可能有点帮助 以下是代码 < ...

  2. 【M34】如何在同一个程序中结合C++和C

    1.C++和C混合编程的时候,需要考虑产生的目标文件的兼容性. 2.名称重整,为什么要搞出名称重整? 连接器要求所有方法名必须独一无二.对于C语言,没问题.C++支持过载,也就是方法名相同,形参表不同 ...

  3. C#将html导出到word(基于wps)

    由于客户需要,我们需要实现将网页导出到word中的功能,在此过程中,尝试使用过openoffice.itext.wordapi等各种方法,都不尽如人意.openoffice导出的问题图片信息在word ...

  4. Fitness training

    2014-01-14 第一次跑步,结束后大腿酸. 2014-01-15 第二次跑步,跑的过程中臀部酸痛,结束后大腿酸痛. 已经进行跑步8次了,后6次,每次3000米 2014-02-06  plank ...

  5. HTML WEB 和HTML Agility Pack结合

    现在,在不少应用场合中都希望做到数据抓取,特别是基于网页部分的抓取.其实网页抓取的过程实际上是通过编程的方法,去抓取不同网站网页后,再进行分析筛选的过程.比如,有的比较购物网站,会同时去抓取不同购物网 ...

  6. Autolayout环境设置任意个数相等间距排列的按钮的方法

    摘要: 在storyboard中,想要用autolayout设置多个按钮按照相同的间距排列,并且自动根据屏幕宽度调整间距大小,就我了解的来说,没有直接的设置方法.我用storyboard+代码的方法实 ...

  7. plupload上传插件在SpringMVC中的整合

    前言:近期在给学院的站点做一个加入附件的功能,首先到了某某邮箱看了一下.简单有用.可是是flash做的,无法拷贝.就仅仅好上网找插件了.经过筛选.最终找到plupload这款插件(其实有的编辑器自带加 ...

  8. 20 Free Open Source Web Media Player Apps

    free Media Players (Free MP3, Video, and Music Player ...) are cool because they let web developers ...

  9. oc-28-构造函数

    Dog.h #import <Foundation/Foundation.h> @interface Dog : NSObject { NSString *_name; int _age; ...

  10. window.location.Reload()和window.location.href 区别

    首先介绍两个方法的语法: reload 方法,该方法强迫浏览器刷新当前页面.语法:location.reload([bForceGet])参数: bForceGet, 可选参数, 默认为 false, ...