単一のパッケージで構成される2012 Deployment Modelを使用してSSISプロジェクトを作成しました。そのパッケージに、OLE DB接続マネージャーを追加し、tempdbをポイントして、スクリプトタスクをキャンバスにドロップしました。また、そのOLE DB接続マネージャーを使用して明示的なログを有効にし、OnInformation
イベントをキャプチャしました。
SCR火災情報
私は2つのパラメータをつかむために私のスクリプトタスクを構成し:System::ExecutionInstanceGUID
そしてSystem::ServerExecutionID
、私はこの時点で認める、私はしていたではないマリアンの回答まで、2番目の変数に気づきました。タスク内で、値を記録できるように2つの情報イベントを発生させます。これは、明示的なテーブル(dbo.sysssislog)と「フリー」ロギング(catalog.operation_messages)の両方に記録する必要があります。
public void Main()
{
bool fireAgain = true;
string description = string.Empty;
string variable = string.Empty;
string value = string.Empty;
variable = "System::ServerExecutionID";
value = Dts.Variables[variable].Value.ToString();
description = string.Format("{0}: {1}", variable, value);
Dts.Events.FireInformation(0, "Reporting", description, string.Empty, 0, ref fireAgain);
variable = "System::ExecutionInstanceGUID";
value = Dts.Variables[variable].Value.ToString();
description = string.Format("{0}: {1}", variable, value);
Dts.Events.FireInformation(0, "Reporting", description, string.Empty, 0, ref fireAgain);
Dts.TaskResult = (int)ScriptResults.Success;
}
展開して実行する
次に、プロジェクトをサーバーにデプロイして実行しました。
操作レポートを開き、SCR Fire info
タスクの詳細をクリックしました。
赤い丸で囲まれた項目は、予想どおり、操作8の詳細を表示していることを示しています。強調表示された行は、OnInformation
これら2つのシステム変数の値をバブルアップしたイベントです。また、予想どおり、System::ServerExecutionID
レポートの値と一致しました。の値はSystem::ExecutionInstanceGUID
いつものように無意味でしたが、{3F515780-8062-40AA-B9EC-C320CBAC5EFD}が存在していました。
すべて一緒に結ぶ
これで、結び付けたい2つの異なるログができました。
sysssislogクエリ
このクエリを実行すると、古い学校のログテーブルから関連する行が引き戻されました。
SELECT
L.event
, L.source
, L.message
FROM
dbo.sysssislog AS L
WHERE
L.executionid = '{3F515780-8062-40AA-B9EC-C320CBAC5EFD}'
ORDER BY
L.id ASC;
結果は次のようになりました
event source message
PackageStart ParameterTest Beginning of package execution.
OnInformation SCR Fire info System::ServerExecutionID: 8
OnInformation ParameterTest System::ServerExecutionID: 8
OnInformation SCR Fire info System::ExecutionInstanceGUID: {3F515780-8062-40AA-B9EC-C320CBAC5EFD}
OnInformation ParameterTest System::ExecutionInstanceGUID: {3F515780-8062-40AA-B9EC-C320CBAC5EFD}
PackageEnd ParameterTest End of package execution.
catalog.operation_messagesクエリ
SSISDBカタログに対してこのクエリを実行すると、上記の報告書にあったすべてのメッセージを示し、また、私は値をリンクすることができ確認message
するoperation_id
だけでなく、に超えるようdbo.sysssislog.executionid
SELECT
OM.*
FROM
catalog.operation_messages AS OM
WHERE
OM.operation_id = 8;
それらの結果は
operation_message_id operation_id message_time message_type message_source_type message extended_info_id
30 8 2013-04-02 21:02:34.1418917 -05:00 10 30 ParameterTest:Validation has started. NULL
31 8 2013-04-02 21:02:34.1738922 -05:00 10 40 SCR Fire info:Validation has started. NULL
32 8 2013-04-02 21:02:34.1768872 -05:00 20 40 SCR Fire info:Validation is complete. NULL
33 8 2013-04-02 21:02:34.1788903 -05:00 20 30 ParameterTest:Validation is complete. NULL
34 8 2013-04-02 21:02:34.3349188 -05:00 30 30 ParameterTest:Start, 9:02:34 PM. NULL
35 8 2013-04-02 21:02:34.4009253 -05:00 30 40 SCR Fire info:Start, 9:02:34 PM. NULL
36 8 2013-04-02 21:02:34.4009253 -05:00 10 40 SCR Fire info:Validation has started. NULL
37 8 2013-04-02 21:02:34.4019251 -05:00 20 40 SCR Fire info:Validation is complete. NULL
38 8 2013-04-02 21:02:34.4219283 -05:00 70 40 SCR Fire info:Information: System::ServerExecutionID: 8 NULL
39 8 2013-04-02 21:02:34.4259295 -05:00 70 40 SCR Fire info:Information: System::ExecutionInstanceGUID: {3F515780-8062-40AA-B9EC-C320CBAC5EFD} NULL
40 8 2013-04-02 21:02:34.4409316 -05:00 40 40 SCR Fire info:Finished, 9:02:34 PM, Elapsed time: 00:00:00.031. NULL
41 8 2013-04-02 21:02:34.4419388 -05:00 40 30 ParameterTest:Finished, 9:02:34 PM, Elapsed time: 00:00:00.125. NULL
要約
パッケージがSSISDBカタログのコンテキスト外(SSDT-BIまたは.ispacへのコマンドライン経由)で実行される場合、値はSystem::ServerExecutionID
0になります。それは理にかなっていますが、将来の読者はLEFT OUTER JOINを使用しますパッケージのすべての実行をキャッチする場合は、sysssislogをcatalog.operation_messagesにリンクします。
帽子の先端、心からの感謝と答えは、私を正しい道に導いてくれたMarianに感謝します。要約されたロギングテーブルにGUID(16バイト)とbigint(8バイト)を格納することを選択した場合、それは私にとって簡単なことではありません。単調に増加する大きな整数をください。