从外部应用程序执行具有脚本组件的SSIS 2012程序包

我正在编写一个应用程序,它将使用Microsoft.SqlServer.ManagedDTS v 11.0程序集执行SSIS 2012程序包。我要执行的程序包是从SSDT-2012设计并成功执行的,并且具有处理无法正确传输的行的脚本组件。


当我尝试运行我的应用程序时,我收到每个脚本组件的错误消息:


SSIS.Pipeline:要在SQL Server数据工具之外运行SSIS包,必须安装Integration Services或更高版本的[脚本组件名称]。


配置:使用以下app.config文件在Windows上为x86构建应用程序:


<?xml version="1.0" encoding="utf-8" ?>

<configuration>

    <startup useLegacyV2RuntimeActivationPolicy="true">

        <supportedRuntime version="v4.0"/>

        <supportedRuntime version="v2.0.50727"/>

    </startup>

</configuration>

唯一相关的代码是:


using System;

using System.Data;

using System.Data.Common;

using System.IO;

using Microsoft.SqlServer.Dts.Runtime;

class MyApp

{

    public void ExecutePackage()

    {

        //Assume I have all the variables I need like packageFile, packageName, 

        //srcConnectionString, destConnectionString and eventListener etc.


        Package pkg;

        Application app;

        DTSExecResults pkgResults;


        app = new Application();

        pkg = app.LoadPackage(packageFile, eventListener);


        pkg.Variables["SrcConnectionString"].Value = srcConnectionString;

        pkg.Variables["DestConnectionString"].Value = destConnectionString;


        if (null != srcAssembly || null != destAssembly)

        {

            foreach (ConnectionManager connection in pkg.Connections)

            {

                if (null != srcAssembly && connection.Name.Contains("Source"))

                {

                    connection.SetQualifier(srcAssembly);

                }

                else if (null != destAssembly && connection.Name.Contains("Destination"))

                {

                    connection.SetQualifier(destAssembly);

                }

            }

        }


        pkgResults = pkg.Execute(null, null, eventListener, null, null);

    } 

}

有任何想法吗?


aluckdog
浏览 451回答 1
1回答
打开App,查看更多内容
随时随地看视频慕课网APP