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. 【转】JAVA SSH 框架介绍

    转自:http://www.admin10000.com/document/150.html SSH 为 struts+spring+hibernate 的一个集成框架,是目前较流行的一种JAVA W ...

  2. UVA 674 Coin Change (DP)

    Suppose there are 5 types of coins: 50-cent, 25-cent, 10-cent, 5-cent, and 1-cent. We want to make c ...

  3. Codeforces Gym 100531I Instruction 构造

    Problem I. Instruction 题目连接: http://codeforces.com/gym/100531/attachments Description Ingrid is a he ...

  4. Codeforces Round #308 (Div. 2) C. Vanya and Scales dfs

    C. Vanya and Scales Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/552/p ...

  5. hdu 1078 FatMouse and Cheese (dfs+记忆化搜索)

    pid=1078">FatMouse and Cheese Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/ ...

  6. python的print(转)

    转载:http://www.pythonclub.org/python-basic/print   使用print输出各型的 字符串 整数 浮点数 出度及精度控制 strHello = 'Hello ...

  7. SQLServer恢复表级数据

    最近几天,公司的技术维护人员频繁让我恢复数据库,因为他们总是少了where条件,导致update.delete出现了无法恢复的后果,加上那些库都是几十G.恢复起来少说也要十几分钟.为此,找了一些资料和 ...

  8. cocos2d-x make: *** [clean-box2d_static-armeabi] Error 1

    /cygdrive/d/android-ndk-r8e/build/core/build-binary.mk:52: recipe for target `clean-cocos_curl_stati ...

  9. windows 8.1 在硬盘上创建扩展分区

    管理员-命令提示符-> diskpart    -->进入分区工具. list disk     -->显示电脑连接磁盘数. select disk *  -->选择编号为*的 ...

  10. U-BOOT配置过程

    摘自:<嵌入式Linux应用开发完全手册> ( Target  :         smdk2410              $1 Architecture:     arm       ...