Sysjobhistory SQL Server 2012 catalog.executions - onlara katılmak için herhangi bir yolu var mı?


9

Kaynaklarımı tükettim ve ssisdb.catalog tablolarını çalıştıran işlere katılmak için kusursuz bir yol bulamıyorum. Katalog masalarından yazılan yürütme sürelerimi ve satırlarımı izlemek için bazı özel sprokslar yazmaya çalışıyorum ve bunları çağrı işi ile birleştirmek çok yararlı olacaktır.

Msdb.sysjobhistory için catalog.executions tabloya katılmak için kullanılabilecek herhangi bir tablo olup olmadığını bulmaya çalışıyorum. SSIS paketi olarak adlandırılan işi ilişkilendirmem ve ardından analizlerimde yürütmelerdeki verileri kullanmam gerekiyor.

Yanıtlar:


5

Hiçbir durumda değil. Ama bir yolum var:

Bu sadece sysjobhistory ileti tablosundaki durum için tasarlanmıştır, dize görünür:

"Yürütme Kimliği: xxxxxxx".

Aşağıdaki sorguda, son sütunda ben ExecutionId ayıklayın.

ExecutionId bir değere sahipse, katılabilir:

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

Bu tabloları da ekleyebileceğini unutmayın:

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

Güncelleme: Kısa cevap: ssisdb.catalog tablolarını çalıştıran işlere katılmanın YOK yolu yoktur. Jamie Thomson'un bu makalelerinde bazı iyi bilgiler var :

Sanırım yapmaya çalıştığınız şey zaten Jamie tarafından yapılıyor. İhtiyaçlarınızı karşılayıp karşılamadığını görmek için sp_ssis_catalog bölümüne bakın.

Onları çalıştıran işlere ssisdb.catalog tablolarına katılmak için bir yol bulamadım. İşin adını öğrenmek için aşağıdakilere başvurabilirsiniz:

Clark Baker SSIS Hata Raporu


0

Kısa cevap EVET

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
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.