Danh mục SQL Server 2012.executions to sysjobhistory - có cách nào để tham gia cùng họ không?


9

Tôi đã cạn kiệt tài nguyên của mình và không thể tìm ra cách dễ dàng để tham gia các bảng ssisdb.catalog cho các công việc điều hành chúng. Cố gắng viết một số sprocs tùy chỉnh để theo dõi thời gian thực hiện của tôi và các hàng được viết từ các bảng danh mục, và sẽ rất có lợi khi có thể liên kết chúng lại với nhau bằng lệnh gọi.

Tôi đang cố gắng tìm hiểu xem có bất kỳ bảng nào có thể được sử dụng để tham gia bảng catalog.executions vào msdb.sysjobhistory. Tôi cần liên quan đến công việc nào được gọi là gói SSIS và sau đó sử dụng dữ liệu trong các lần thực hiện để phân tích.

Câu trả lời:


5

Không cho bất kỳ trường hợp. Nhưng tôi có một số cách:

Nó được thiết kế chỉ dành cho trường hợp trong bảng thông báo sysjobhistory, xuất hiện chuỗi:

"ID thực thi: xxxxxxx".

Trong truy vấn sau đây, trong cột cuối cùng tôi trích xuất ExecutId.

Trong trường hợp ExecutId có giá trị, nó có thể tham gia:

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

Lưu ý rằng cũng có thể đính kèm các bảng này:

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

Cập nhật: Câu trả lời ngắn gọn là: KHÔNG có cách nào để tham gia các bảng ssisdb.catalog vào các công việc chạy chúng. Có một số thông tin tốt có sẵn trong các bài viết này của Jamie Thomson :

Tôi đoán, những gì bạn đang cố gắng làm đã được Jamie thực hiện. Tham khảo sp_ssis_catalog để xem nó có đáp ứng nhu cầu của bạn hay không.

Tôi không tìm thấy cách nào để tham gia các bảng ssisdb.catalog vào các công việc chạy chúng. Bạn có thể tham khảo những điều sau đây để có cái nhìn sâu sắc để có được tên công việc:

Báo cáo lỗi SSIS Email của Clark Baker


0

Câu trả lời ngắn gọn là có

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
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.