谈如何使用C#调用SSIS包

 

上次转过一篇关于如何使用C#调用SSIS包的文章,但其平台是旧版本的。

现在讲的是如下平台: Windows2003 R2 SP2;SQL SERVER 2005 加所有最新补丁;VS 2005 professional Edition。

首先应该加入引用

C:/Program Files/Microsoft SQL Server/90/SDK/Assemblies/Microsoft.SQLServer.DTSRuntimeWrap.dll 版本 9.0.242.0

加入后看到 Microsoft.SQLServer.DTSRuntimeWrap

using DtsRunTime = Microsoft.SqlServer.Dts.Runtime.Wrapper;

这个Wrapper是新版本有的,以前版本只要using DtsRunTime = Microsoft.SqlServer.Dts.Runtime。

            Console.WriteLine("ETL start...");             string filepath = "Package.dtsx";             DtsRunTime.Application application = new DtsRunTime.Application();             DtsRunTime.IDTSPackage90 package = application.LoadPackage(filepath, true, null);                         DtsRunTime.DTSExecResult result = package.Execute();             if (result.Equals(DtsRunTime.DTSExecResult.DTSER_SUCCESS))             {                 listBox1.Items.Add("ETL success");             }             else             {                 listBox1.Items.Add("ETL failed");                 return;             }

其中所有的类都包入Wrapper中。注意和以前的不同。

LoadPackage的参数顺序也进行了改变。Microsoft.SqlServer.Dts.Runtime.Wrapper.IDTSPackage90 LoadPackage(string FileName, bool loadNeutral, Microsoft.SqlServer.Dts.Runtime.Wrapper.IDTSEvents90 pEvents)

 

返回参数修改为IDTSPackage90 这个接口,但原先的Package仍然存在。

执行结果增加了前缀DTSER_ 分别为 DTSER_SUCCESS,DTSER_CANCELED,DTSER_COMPLETION,.DTSER_FAILURE。

原先的参数 Variables现在已经没有了,需要用 Configurations。

OK,就先讲这么多。

 

今天对上边讲的内容进行下补充:

其实包空间Microsoft.SqlServer.Dts.Runtime;仍然存在,需要引入 Microsoft.SqlServer.ManagedDTS

对应的文件是 C:/Program Files/Microsoft SQL Server/90/SDK/Assemblies/Microsoft.SQLServer.ManagedDTS.dll

这样,使用包就不用直接用IDTSPackage90 了。代码可以改为如下:

 using Microsoft.SqlServer.Dts.Runtime;

           Console.WriteLine("ETL start...");             string filepath = "Package.dtsx";             Microsoft.SqlServer.Dts.Runtime.Application application = new Microsoft.SqlServer.Dts.Runtime.Application();             Package  package = application.LoadPackage(filepath, null);                          DTSExecResult result = package.Execute();             if (result.Equals(DTSExecResult.Success ))             {                 listBox1.Items.Add("ETL success");             }             else             {                 listBox1.Items.Add("ETL failed");                 return;             }

package.Variables 也可以使用了。

 

using Microsoft.SqlServer.Dts.Pipeline; 对应 Microsoft.SqlServer.PipelineHost.dll using Microsoft.SqlServer.Dts.Pipeline.Wrapper; 对应 Microsoft.SqlServer.DTSPipelineWrap.dll using Microsoft.SqlServer.Dts.Runtime; 对应Microsoft.SqlServer.ManagedDTS.dll using Microsoft.SqlServer.Dts.Runtime.Wrapper; 对应Microsoft.SqlServer.DTSRuntimeWrap.dll

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值