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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值