SQL Server 2012 catalog.excutions untuk sysjobhistory - cara apa saja untuk bergabung dengan mereka?

9

Saya telah kehabisan sumber daya dan tidak dapat menemukan cara yang sangat mudah untuk bergabung dengan tabel ssisdb.catalog ke pekerjaan yang menjalankannya. Mencoba menulis beberapa sprocs khusus untuk memantau waktu dan baris eksekusi saya yang ditulis dari tabel katalog, dan akan sangat bermanfaat untuk dapat mengikatnya bersama dengan pekerjaan panggilan.

Saya mencoba mencari tahu apakah ada tabel yang dapat digunakan untuk bergabung dengan tabel catalog.executions ke msdb.sysjobhistory. Saya perlu menghubungkan pekerjaan yang disebut paket SSIS dan kemudian menggunakan data dalam eksekusi untuk analisis saya.

Cate Donoghue
sumber

Jawaban:

5

Tidak untuk kasus apa pun. Tapi saya punya beberapa cara:

Ini dirancang hanya untuk kasus di sysjobhistory tabel pesan, muncul string:

"ID Eksekusi: xxxxxxx".

Dalam kueri berikut, di kolom terakhir saya mengekstrak ExecutionId.

Dalam kasus ExecutionId memiliki nilai, itu dapat bergabung:

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

Catatan yang juga dapat melampirkan tabel ini:

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
sumber
2

Pembaruan: Jawaban singkatnya adalah: TIDAK ADA cara untuk bergabung dengan tabel ssisdb.catalog ke pekerjaan yang menjalankannya. Ada beberapa info bagus yang tersedia dalam artikel ini oleh Jamie Thomson :

Saya kira, apa yang Anda coba lakukan sudah dilakukan oleh Jamie. Rujuk ke sp_ssis_catalog untuk melihat apakah itu memenuhi kebutuhan Anda atau tidak.

Saya tidak menemukan cara untuk bergabung dengan tabel ssisdb.catalog ke pekerjaan yang menjalankannya. Anda dapat merujuk pada yang berikut untuk beberapa wawasan untuk mendapatkan nama pekerjaan:

Laporkan Kesalahan SSIS Email oleh Clark Baker

Kin Shah
sumber
0

Jawaban singkatnya adalah YA

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
sumber