web-dev-qa-db-ja.com

sysjobhistoryへのSQL Server 2012 catalog.executions-それらを結合する方法は?

リソースを使い果たしましたが、ssisdb.catalogテーブルをそれらを実行するジョブに結合するための確実な方法が見つかりません。いくつかのカスタムsprocを記述して、実行時間とカタログテーブルから書き込まれた行を監視しようとすると、呼び出し元のジョブとそれらを結び付けることができれば非常に有益です。

私は、catalog.executionsテーブルをmsdb.sysjobhistoryに結合するために使用できるテーブルがあるかどうかを確認しようとしています。 SSISパッケージと呼ばれるジョブを関連付けてから、実行にデータを使用して分析する必要があります。

9
Cate Donoghue

いかなる場合もありません。しかし、私にはいくつかの方法があります:

メッセージテーブルsysjobhistoryの場合にのみ設計されており、文字列が表示されます。

「実行ID:xxxxxxx」。

次のクエリでは、最後の列でExecutionIdを抽出しています。

ExecutionIdに値がある場合、結合できます。

SELECT * 
FROM (
    SELECT 
        h.step_name,  
        h.message, 
        h.run_status, 
        h.run_date, 
        h.run_time, 
        SUBSTRING(h.message, NULLIF(CHARINDEX('Execution ID: ', h.message),0)+14 ,PATINDEX('%[^0-9]%',SUBSTRING(h.message, NULLIF(CHARINDEX('Execution ID: ', h.message),0)+14 ,20))-1) ExecutionId
    FROM MSDB.DBO.SYSJOBHISTORY h) history
LEFT JOIN 
SSISDB.CATALOG.EXECUTIONS ex on ex.execution_id = history.ExecutionId

は、これらのテーブルをアタッチすることもできます。

LEFT JOIN SSISDB.CATALOG.OPERATION_MESSAGES om on history.ExecutionId = om.operation_id
LEFT JOIN SSISDB.CATALOG.EVENT_MESSAGES em on em.operation_id =history.ExecutionId 
5
Refael

更新:短い答えは次のとおりです:ssisdb.catalogテーブルを実行するジョブに結合する方法は[〜#〜] no [〜#〜]ですそれら。 Jamie Thomson がこれらの記事で利用できるいくつかの良い情報があります:

あなたがやろうとしていることは、すでにジェイミーによって行われていると思います。 sp_ssis_catalogを参照して、ニーズを満たしているかどうかを確認してください。

Ssisdb.catalogテーブルをそれらを実行するジョブに結合する方法が見つかりませんでした。ジョブ名を取得するための洞察については、以下を参照できます。

SSISエラーレポートメール by Clark Ba​​ker

2
Kin Shah

短い答えはYESです

SELECT TOP 200
M.[Message_time],
(SELECT TOP 1 Name from MSDB.dbo.SysJobs J INNER JOIN MSDB.dbo.SysJobSteps S (NOLOCK) ON 
        J.Job_ID = S.Job_ID WHERE S.Command like '%' +  M.[Package_Name] + '%') as Job_Name,
M.[Package_Name],
M.[Execution_path],
M.[Subcomponent_name],
M.[Message]
FROM SSISDB.[catalog].[Event_messages] M (NOLOCK)    
WHERE Event_name = 'OnError'
ORDER BY Message_time DESC
0
Mark Morrow