設定
Visual Studio から実行できる vs2010 SSIS パッケージがあります。これをローカルの 2012 サーバーにデプロイしました。SSMS からそのパッケージを実行することもできます。SSMS では、ここにパッケージが表示されます。
\統合サービス カタログ\SSISDB\DAT_Load\Projects\UploadSYS.dtsx
注: vs2010 では、サーバー以外の場所にパッケージをデプロイするオプションはありません。その後は、Integration Services カタログにのみデプロイします。そこに入ると、MSDB データベースには sysssispackages テーブルにエントリがありません。
以前は、SSMS を起動してそこからパッケージを実行するだけで十分でした (右クリックして実行)。ここで、これを C# Web アプリケーションから実行する必要があります。さらに、イベントを通じて進行状況メッセージなどをトラップする必要があります。
努力
イベント トラップを設定する方法を決定することができ、コードからパッケージを実行できるはずのポイントに到達しました。
public DTSExecResult ExecutePackage(string packageName, HttpContextBase context)
{
string ppath = ConfigurationManager.AppSettings[packageName + "Package"];
string pserv = ConfigurationManager.AppSettings[packageName + "Server"];
string puser = ConfigurationManager.AppSettings[packageName + "User"];
string ppass = ConfigurationManager.AppSettings[packageName + "Pwd"];
_context = context;
_pkgLocation = "";
_app = new Application();
_pkg = _app.LoadFromSqlServer(ppath, pserv, puser, ppass, _SSISEvents);
_pkgResults = _pkg.Execute(_connections, _variables, _SSISEvents, _log, null);
return _pkgResults;
}
問題
パッケージが見つかりません。LoadFromSqlServer ステートメントに到達すると、次のようなエラーが表示されます。
フォルダ "\Integration Services Catalogs\SSISDB\DAT_Load\Projects\UploadSYS.dtsx" が見つかりません
パスのバリエーション (変数 = ppath) についても同じことが起こります。
- \統合サービス カタログ\SSISDB\DAT_Load\Projects\UploadSYS.dtsx
- \SSISDB\DAT_Load\Projects\UploadSYS.dtsx
- \DAT_Load\Projects\UploadSYS.dtsx
- 等
これをコマンド ラインまたはストアド プロシージャから実行することはできません。
それで、私がここで欠けているものを誰か教えてもらえますか? Application オブジェクトは何かを初期化する必要がありますか? これは可能ですか?