c# – 执行包含来自外部应用程序的脚本组件的SSIS 2012包
发布时间:2020-12-15 07:45:26 所属栏目:百科 来源:网络整理
导读:我正在编写一个应用程序,它将使用Microsoft.SqlServer.ManagedDTS v 11.0程序集执行SSIS 2012程序包.我正在尝试执行的程序包是从SSDT-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); } } 有任何想法吗? 解决方法
您没有在运行应用程序的计算机上安装SQL Server Integration Services服务.
另见https://dba.stackexchange.com/questions/49786/error-to-run-a-ssis-package-outside-of-sql-server-data-tools-you-must-install (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |