web-dev-qa-db-ja.com

SSISスクリプトタスクがスケジュールされたときに実行されていないように見える

SQL Serverエージェントからジョブがトリガーされたときに実行されていないように見えるSSIS内にスクリプトタスクがあります。 SQLスクリプトタスクなのか、その前のタスクなのかわからないので、実行されていないように見えます。

ETLプロセスのこの部分の基本的な目標は、ダウンロードされたすべてのファイルをグループ化し、一度に1セットずつ処理することです(1セットあたり5ファイル)。

enter image description here

GetFullSourcePath SQLタスクは、オブジェクトデータ型(戻り値の型=完全な結果セット)を出力します。各ループコンテナーのソースファイルのコピー内で、SQLスクリプトタスクを使用してそれを文字列に変換し、ファイルシステムタスクを使用して、ファイルをインバウンドからToDoに移動して処理します。

SQLスクリプトは、Objectデータ型を文字列に変換する非常に単純なC#操作です。 1つの入力変数と1つの出力変数があります。ただし、出力値は入力されないため、ETLジョブの次のステップでソースファイルを見つけることができません。

    public void Main()
    {
        //Dts.Variables["User::SourceFile"].Value = Dts.Variables["User::FullSourcePath"].ToString();

        object myObjectVar = Dts.Variables["FullSourcePath"].Value;
        string myString = (string)myObjectVar;
        Dts.Variables["SourceFile"].Value = myString;

        Dts.TaskResult = (int)ScriptResults.Success;
    }

実行レポートを表示すると、スクリプトにエラーはありません。 Visual Studio 2015 Enterprise、SSDT BI Preview(2015年12月リリース)、およびSQL Server 2014を使用しています。VSからパッケージを実行すると、問題なく動作します。

「somefile.txt」が見つからないというエラーが表示されます。スクリプトタスクの出力変数でもある読み取り/書き込み変数のデフォルトは、パッケージ変数の「somefile.txt」です。これにより、スクリプトタスクが機能していないことを想定しましたが、同様に他のタスクである可能性もあります。念のため、実行ログをもう少し詳しく調べます。

3
Clive Strong

私はこれを解決しました。 SSDT Feb update をインストールし、- Dave で示唆されているように、バージョンをSQL Server 2014にターゲティングしました。 1つのスクリプト(無関係なパッケージとスクリプトタスク)を微調整する必要がありましたが、その後、なんとかビルドと展開を行うことができました。楽しく処理しています。

実行前/実行後メッセージはすべてクリーンでしたが、この質問に関するアドバイスに基づいて、メッセージをより詳細に分析したので、ここでも少し知識を身につけました!

すべてのフィードバック、特に billinkc からのコメントをありがとう:

サーバーで実行されたパッケージの実行ログを確認します。私の推測では、最終的にはアクセス許可の問題があることがわかりますが、現時点では、いくつかの場所にある可能性があります。

具体的には、実行レポートの実行前/実行後エントリを確認します。これは、スクリプトタスクが実行されたかどうかを示します。事前/事後がない場合は、Foreachループコンテナーに関連する情報イベントを探します。

許可の問題が原因でFELCがディレクトリを表示できない場合は、エラーが発生しますnot。代わりに、正常に機能しなくなり、人口の99.999%がトリップします。

検証の問題である場合(パッケージの開始時にsomefile.txtが存在しないため、現在のファイルが何であるかが決定されます)、接続マネージャでDelayValidationプロパティをtrueに設定する必要があります上記の接続マネージャを参照するタスク。

1
Clive Strong