C#调用SSIS包及读取DataReader目标

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.SingleResult);
              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都要设置。

时间: 2024-11-13 04:12:56

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

SSIS包调用SSIS包

一个SSIS包是可以调用其它SSIS package的,在SSIS Tools 中Common分类下,有一个组件Execute Package Task,使用该组件,能够在一个package中调用并执行其他package. 在SSIS包属性中,有两种方式来设置引用包的路径,一种是在Package中,设置ReferenceType和PackageNameFromProjectReference,一种是在Expressions中设置Property Expressions来引用包. 第一种方式: R

c# 代码调用ssis包

https://docs.microsoft.com/en-us/sql/integration-services/run-manage-packages-programmatically/loading-and-running-a-local-package-programmatically?view=sql-server-2017 https://www.cnblogs.com/aspnetx/p/3377003.html 原文地址:https://www.cnblogs.com/ifree

java 从jar包中读取资源文件

在代码中读取一些资源文件(比如图片,音乐,文本等等),在集成环境(Eclipse)中运行的时候没有问题.但当打包成一个可执行的jar包(将资源文件一并打包)以后,这些资源文件找不到,如下代码:Java代码 [java] view plaincopy //源代码1: package edu.hxraid; import java.io.*; public class Resource { public  void getResource() throws IOException{ File fil

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

效率最高的Excel数据导入---(c#调用SSIS Package将数据库数据导入到Excel文件中[附源代码下载])  本文目录: (一)背景 (二)数据库数据导入到Excel的方法比较   (三)SSIS的简介   (四)数据库中存储过程示例(SSIS应用需要) (五)Excel模板的制作(这步这么简单,稍微介绍一下)   (六)SSIS操作过程(生成Package,用来调用)(下一篇随笔将详细讲解制作Package包的过程,图片太多,篇幅过长,因此本文将直接采用生成的Package包进行

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

(转)java 从jar包中读取资源文件 博客分类: java 源自:http://blog.csdn.net/b_h_l/article/details/7767829 在代码中读取一些资源文件(比如图片,音乐,文本等等),在集成环境(Eclipse)中运行的时候没有问题.但当打包成一个可执行的jar包(将资源文件一并打包)以后,这些资源文件找不到,如下代码:Java代码 [java] view plaincopy //源代码1: package edu.hxraid; import java

变量在SSIS包中的使用

2010~2011年经常使用SSIS包采集加工数据,后来换了工作就很少使用.最近又开始用那玩意采集数据,努力回想之前是怎样操作的,网上各种找各种纠结.趁这次使用记录下日常操作步骤,以备以后不时之需. --环境SQL Server2012.VS2010(安装数据库时默认会安装)下载示例数据库AdventureWorks2012 1 CREATE DATABASE [AdventureWorks2012] ON 2 (FILENAME=N'D:\SQL2012\MSSQL11.SQL12\MSSQL

SSIS 包配置

在商业智能解决方案中,SSIS工程有两种部署模式:工程部署(project deployment)和包部署(package deployment),默认是工程部署模式,在Package的管理上,工程部署模式是当前主流的部署模式,比包部署的更容易管理,也更容易对package进行调试和故障排除,而包部署模式是传统的部署模式在包部署模式中.在包部署模式中,SSIS引擎支持包配置(Package Configuration)功能,用户能够在Package运行时动态修改属性值.包配置是配置项的集合,每一

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

本文就SQL统计分析SSIS包的部署进行一次详细的部署图解教程,Sql Server Integration Services 提供了非常简单的部署工具,利用这些工具可以方便地将包文件(*.dtsx).包配置文件(*.dtsconfig)以及包的其它相关文件,打包成一个安装文件,以利于到其它计算机安装与部署. 下面我们以前面介绍的DEPJ1200 为例,来详细介绍包部署的完整过程. (-)生成安装部署文件.  在SQL Server Business Intelligence Developme

总结运行SSIS包的几种方式

很多程序员,不止.net程序员都有可能会用到SSIS包来处理一些数据流程上的任务.可以说SSIS作为BI下的一个ETL工具,方便易学,而且功能也确实很强大.于是开发OLTP的同事总会到我们这边寻求技术上的支持,更多的时候会问我,当一个SSIS包开发完成之后,都有哪几种方式可以让它运行起来.一直以来我都想把这个问题总结下来,今天在MSSQLTIPS网站上看老外写了一个现成的总结,于是加上自己的理解,简略的对其进行了翻译,并且加以补充. 如果大家对这篇文章的原文感兴趣,可以参考老外原文地址链接: h