Microsoft.SqlServer.ManagedDTS v 11.0 アセンブリを使用して SSIS 2012 パッケージを実行するアプリケーションを作成しています。実行しようとしているパッケージは、SSDT-2012 から設計され、正常に実行され、正しく転送されない行を処理するスクリプト コンポーネントが含まれています。
アプリケーションを実行しようとすると、スクリプト コンポーネントごとに次のエラー メッセージが表示されます。
SSIS.Pipeline: SQL Server Data Tools の外部で 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);
}
}
何か案は?