6

設定

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 オブジェクトは何かを初期化する必要がありますか? これは可能ですか?

4

1 に答える 1

9

この問題をもう一度取り上げますが 、背景知識については、 Set SSIS database package pathSSIS Organizationを参照してください。

SSIS 2012 までは、パッケージが SQL Server に配置された場合、それらは msdb に存在していました。それらと対話するための .NET API は、バージョン間で同じでした。

SSIS の 2012 リリースでは、2 つの異なる展開モデルがあります。「クラシック」モデルであるパッケージ展開は健在で、完全にサポートされています。2005 でパッケージを実行するための同じコードは、2012 パッケージ配置モデル プロジェクトでも機能します。これはMicrosoft.SqlServer.Dts.Runtime名前空間です

コードは、「パッケージ配置モデル」API を使用して「プロジェクト配置モデル」を使用して構築された 2012 ソリューションを読み込もうとしています。これはMicrosoft.SqlServer.Management.IntegrationServices名前空間であり、2 つが混在することはありません。

オプションは、プロジェクトをパッケージ デプロイ モデルに戻すか、コードを更新することです。最初のリンクされた質問では、SSISDB カタログで SSIS パッケージを実行するための VB.NET 実装を提供しました。オプションが表示されますが、特定の方法が表示されないため、.ispac ファイルを実行する方法がいくつかdtexecあります。これは、パッケージをローカルで実行するときに VS/SSDT が使用するメカニズムです。

于 2013-08-06T04:53:46.677 に答える