Catalog.executions di SQL Server 2012 su sysjobhistory - un modo per unirli?


9

Ho esaurito le mie risorse e non riesco a trovare un modo infallibile per unire le tabelle ssisdb.catalog ai lavori che le eseguono. Cercare di scrivere alcuni sprocs personalizzati per monitorare i miei tempi di esecuzione e le righe scritte dalle tabelle del catalogo, e sarebbe molto utile riuscire a legarli insieme al lavoro chiamante.

Sto cercando di scoprire se ci sono tabelle che possono essere utilizzate per unire la tabella catalog.executions a msdb.sysjobhistory. Devo mettere in relazione quale lavoro chiamato pacchetto SSIS e quindi utilizzare i dati nelle esecuzioni per la mia analisi.

Risposte:


5

Non per nessun caso. Ma ho un modo:

È progettato solo per il caso nella tabella dei messaggi sysjobhistory, appare stringa:

"ID esecuzione: xxxxxxx".

Nella query seguente, nell'ultima colonna estraggo ExecutionId.

Nel caso in cui ExecutionId abbia un valore, può unirsi:

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

Nota che puoi anche allegare queste tabelle:

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 

2

Aggiornamento: La risposta breve è: Non c'è NESSUN modo di unire le tabelle ssisdb.catalog ai posti di lavoro che li gestiscono. Ci sono alcune buone informazioni disponibili in questi articoli di Jamie Thomson :

Immagino che quello che stai cercando di fare sia già stato fatto da Jamie. Fare riferimento a sp_ssis_catalog per vedere se soddisfa o meno le proprie esigenze.

Non ho trovato il modo di unire le tabelle ssisdb.catalog ai lavori che le eseguono. È possibile fare riferimento a quanto segue per alcune informazioni per ottenere il nome del lavoro:

Email di segnalazione errori SSIS di Clark Baker


0

La risposta breve è SÌ

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
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.