ExecutionInstanceGUIDをSSISDBに関連付ける


13

SQL Server Integration Servicesの2012リリースであるSSISは、(特に)パッケージの操作を追跡するSSISDBカタログを提供しています。プロジェクト展開モデルを使用するソリューションの既定のパッケージ実行では、SSISDBへのログ記録が有効になります。

パッケージが実行されると、にSystem::ExecutionInstanceGUID明示的なロギング(sys.sysdtslog90/ sys.sysssislog)を使用している場合、特定のパッケージ実行のすべてのイベントを記録する値が設定されます。

私が知りたいのですが、どのように私はExecutionInstanceGUIDを結ぶんですもの SSISDBカタログに。または、SSISDBで実行されるSSISパッケージは、その値のcatalog.executions.execution_id

最終的に、既存のカスタム監査テーブルを使用して、SSISDBカタログの詳細な履歴にリンクしようとしていますが、リンクが見つからないようです。

回答:


5

コメントするには多すぎるが、何かをしようとしている。そのシステムテーブルcatalog.executionsのmsdnページから取得します。

execution_id-bigint-実行インスタンスの一意の識別子(ID)。

この記事から-SSIS 2012-過去の実行に関する接続マネージャー情報の表示 -私はそれを理解しています:

SSIS 2012は、パッケージ内で使用するための新しいシステム変数ServerExecutionIDを提供します。したがって、カスタムログ/通知を行う場合、検索に使用するカタログビューへの直接ポインターとなるため、含めるのに適した変数です。接続文字列情報。... Catalog.executionsには、実行ごとに1行が含まれます。ここで、execution_idでフィルタリングします。

次のサンプルクエリの場合:

DECLARE @execution_id BIGINT = 41753; -- Your execution_id/ServerExecutionID goes here.
SELECT e.package_name,
        e.start_time,
        e.end_time,
        e.status,
        emc.package_path,
        CAST(emc.property_value AS VARCHAR(1000)) AS connection_string
   FROM catalog.executions e
   JOIN catalog.event_messages em
     ON e.execution_id = em.operation_id
   JOIN catalog.event_message_context AS emc WITH (FORCESEEK)
     ON em.event_message_id = emc.event_message_id
    AND emc.property_name = 'ConnectionString'
    AND emc.context_type = 80 -- Connection Managers
  WHERE e.execution_id = @execution_id;

表示されないのは、このテーブルのExecutionInstanceGUIDです。しかし、私が見るのは、この古代のConnectアイテムで、次の物語があります。

SSIS RunningPackage.InstanceID!= System :: ExecutionInstanceGUID は等しいはずですが。

したがって、私の結論は、ExecutionInstanceGUIDはexecution_idではなく、SSISDBにある場合はInstanceId列に関連しているということです。


9

単一のパッケージで構成される2012 Deployment Modelを使用してSSISプロジェクトを作成しました。そのパッケージに、OLE DB接続マネージャーを追加し、tempdbをポイントして、スクリプトタスクをキャンバスにドロップしました。また、そのOLE DB接続マネージャーを使用して明示的なログを有効にし、OnInformationイベントをキャプチャしました。

スクリプトタスクを使用した制御フロー-SCR Fire情報

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;
    }

展開して実行する

次に、プロジェクトをサーバーにデプロイして実行しました。

操作レポート、操作ID 8を表示するプロンプト

操作レポートを開き、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::ServerExecutionID0になります。それは理にかなっていますが、将来の読者はLEFT OUTER JOINを使用しますパッケージのすべての実行をキャッチする場合は、sysssislogをcatalog.operation_messagesにリンクします。

帽子の先端、心からの感謝と答えは、私を正しい道に導いてくれたMarianに感謝します。要約されたロギングテーブルにGUID(16バイト)とbigint(8バイト)を格納することを選択した場合、それは私にとって簡単なことではありません。単調に増加する大きな整数をください。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.