SQL Serverエージェントからジョブがトリガーされたときに実行されていないように見えるSSIS内にスクリプトタスクがあります。 SQLスクリプトタスクなのか、その前のタスクなのかわからないので、実行されていないように見えます。
ETLプロセスのこの部分の基本的な目標は、ダウンロードされたすべてのファイルをグループ化し、一度に1セットずつ処理することです(1セットあたり5ファイル)。
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」です。これにより、スクリプトタスクが機能していないことを想定しましたが、同様に他のタスクである可能性もあります。念のため、実行ログをもう少し詳しく調べます。
私はこれを解決しました。 SSDT Feb update をインストールし、- Dave で示唆されているように、バージョンをSQL Server 2014にターゲティングしました。 1つのスクリプト(無関係なパッケージとスクリプトタスク)を微調整する必要がありましたが、その後、なんとかビルドと展開を行うことができました。楽しく処理しています。
実行前/実行後メッセージはすべてクリーンでしたが、この質問に関するアドバイスに基づいて、メッセージをより詳細に分析したので、ここでも少し知識を身につけました!
すべてのフィードバック、特に billinkc からのコメントをありがとう:
サーバーで実行されたパッケージの実行ログを確認します。私の推測では、最終的にはアクセス許可の問題があることがわかりますが、現時点では、いくつかの場所にある可能性があります。
具体的には、実行レポートの実行前/実行後エントリを確認します。これは、スクリプトタスクが実行されたかどうかを示します。事前/事後がない場合は、Foreachループコンテナーに関連する情報イベントを探します。
許可の問題が原因でFELCがディレクトリを表示できない場合は、エラーが発生しますnot。代わりに、正常に機能しなくなり、人口の99.999%がトリップします。
検証の問題である場合(パッケージの開始時にsomefile.txtが存在しないため、現在のファイルが何であるかが決定されます)、接続マネージャで
DelayValidation
プロパティをtrueに設定する必要があります上記の接続マネージャを参照するタスク。