执行包含来自外部应用程序的脚本组件的 SSIS 2012 包 [英] Executing SSIS 2012 package that has script components from external application
问题描述
我正在编写一个应用程序,该应用程序将使用 Microsoft.SqlServer.ManagedDTS v 11.0 程序集执行 SSIS 2012 包.我尝试执行的包是从 SSDT-2012 设计并成功执行的,并且具有处理无法正确传输的行的脚本组件.
I'm writing an application that will execute an SSIS 2012 package using the Microsoft.SqlServer.ManagedDTS v 11.0 assembly. The package that I'm trying to execute was designed and successfully executed from SSDT-2012, and has script components that handle rows that don't transfer correctly.
当我尝试运行我的应用程序时,我收到每个脚本组件的错误消息:
When I try to run my application I get the error message for each of my script components:
SSIS.Pipeline:要在 SQL Server Data Tools 之外运行 SSIS 包,您必须安装 Integration Services 或更高版本的 [脚本组件名称].
SSIS.Pipeline: To run a SSIS package outside of SQL Server Data Tools you must install [Script Component Name] of Integration Services or higher.
配置:使用以下 app.config 文件在 Windows 上为 x86 构建应用程序:
Configuration: Building application for x86 on Windows with the following app.config file:
<?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);
}
}
有什么想法吗?
推荐答案
您没有在运行应用程序的计算机上安装 SQL Server 集成服务服务.
You do not have the SQL Server Integration Services Service installed on the machine the application is running from.
这篇关于执行包含来自外部应用程序的脚本组件的 SSIS 2012 包的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!