回答:
いかなる場合もありません。しかし、私にはいくつかの方法があります:
メッセージテーブル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
アップデート:短い答えは:ありませんNO、それらを実行するジョブにssisdb.catalogテーブルを結合する方法は。これらの記事には、Jamie Thomsonによる優れた情報がいくつかあります。
あなたがやろうとしていることは、すでにジェイミーによって行われていると思います。sp_ssis_catalogを参照して、ニーズを満たしているかどうかを確認してください。
ssisdb.catalogテーブルをそれらを実行するジョブに結合する方法が見つかりませんでした。ジョブ名を取得するための洞察については、以下を参照できます。
Clark BakerによるSSISエラーレポートメール
短い答えは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