SQL Server 2012 catalog.executions to sysjobhistory - eine Möglichkeit, sich ihnen anzuschließen?

9

Ich habe meine Ressourcen aufgebraucht und kann keine narrensichere Möglichkeit finden, die Tabellen ssisdb.catalog mit den Jobs zu verknüpfen, auf denen sie ausgeführt werden. Der Versuch, einige benutzerdefinierte Sprocs zu schreiben, um meine Ausführungszeiten und Zeilen zu überwachen, die aus den Katalogtabellen geschrieben wurden, und es wäre sehr vorteilhaft, sie mit dem aufrufenden Job verknüpfen zu können.

Ich versuche herauszufinden, ob es Tabellen gibt, mit denen die Tabelle catalog.executions mit msdb.sysjobhistory verknüpft werden kann. Ich muss angeben, welcher Job als SSIS-Paket bezeichnet wird, und dann die Daten in Ausführungen für meine Analyse verwenden.

Cate Donoghue
quelle

Antworten:

5

Auf keinen Fall. Aber ich habe einen Weg:

Es ist nur für den Fall in der Nachrichtentabelle sysjobhistory konzipiert, erscheint string:

"Ausführungs-ID: xxxxxxx".

In der folgenden Abfrage extrahiere ich in der letzten Spalte die ExecutionId.

Wenn ExecutionId einen Wert hat, kann er beitreten:

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

Beachten Sie, dass diese Tabellen auch angehängt werden können:

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 
Refael
quelle
2

Update: Die kurze Antwort lautet: Es gibt KEINE Möglichkeit, ssisdb.catalog-Tabellen mit den Jobs zu verbinden, die sie ausführen. In diesen Artikeln von Jamie Thomson finden Sie einige gute Informationen :

Ich denke, was Sie versuchen zu tun, wird bereits von Jamie getan. Überprüfen Sie im sp_ssis_catalog, ob es Ihren Anforderungen entspricht oder nicht.

Ich habe keine Möglichkeit gefunden, ssisdb.catalog-Tabellen mit den Jobs zu verknüpfen, mit denen sie ausgeführt werden. Im Folgenden finden Sie einige Informationen zum Abrufen des Jobnamens:

SSIS-Fehlerbericht E-Mail von Clark Baker

Kin Shah
quelle
0

Die kurze Antwort lautet JA

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
Mark Morrow
quelle