2017-09-17 55 views
0

我在SSIS包中有四個順序任務。如何在每10分鐘後獲取當前正在運行的任務的名稱?如何獲取ssis包中當前正在運行的任務的名稱

+0

是不是執行歷史報告還不夠嗎?它會告訴你執行過程中已經發生了什麼,執行時間。如果你需要目前的任務,你可能需要*現在*。這份10分鐘的舊記錄已經在報道中 –

回答

0

以下是一個腳本,您可以使用該腳本來使用SQL Job代理來獲取正在運行的package_name。然後,您可以創建一個ssis包來提取這些數據,然後在每10分鐘運行一次的SQL JOB代理中進行設置。您可以在message_source_name看到任務名稱

當前運行的程序包與TASKNAME:

USE SSISDB 
GO 
/* 
Configuration 
*/ 
    -- Filter data by execution id (use NULL for no filter) 

-- Show only Child Packages or everyhing 
DECLARE @showOnlyChildPackages BIT = 0; 
-- Show only message from a specific Message Source 
DECLARE @messageSourceName NVARCHAR(MAX)= '%' 

-- Filter data by project name (use % for no filter) 
DECLARE @projectNamePattern NVARCHAR(100) = '%' 
-- Filter data by package name (use % for no filter) 
DECLARE @packageNamePattern NVARCHAR(100) = '%' 
-- Filter data by execution id (use NULL for no filter) 
DECLARE @executionIdFilter BIGINT = NULL; 
with running as (

/* 
Implementation 
*/ 
-- Show last 15 executions 
SELECT TOP 15 
e.execution_id, 
e.project_name, 
e.package_name, 
e.project_lsn, 
e.status, 
status_desc = CASE e.status 
WHEN 1 THEN 'Created' 
WHEN 2 THEN 'Running' 
WHEN 3 THEN 'Cancelled' 
WHEN 4 THEN 'Failed' 
WHEN 5 THEN 'Pending' 
WHEN 6 THEN 'Ended Unexpectedly' 
WHEN 7 THEN 'Succeeded' 
WHEN 8 THEN 'Stopping' 
WHEN 9 THEN 'Completed' 
END, 
e.start_time, 
e.end_time, 
elapsed_time_min = datediff(mi, e.start_time, e.end_time) 
FROM 
catalog.executions e 
WHERE 
e.project_name LIKE @projectNamePattern 
AND 
e.package_name LIKE @packageNamePattern 
AND 
e.execution_id = ISNULL(@executionIdFilter, e.execution_id) 
and e.status = 2 


) 



select * from running a 
inner join 
(
    SELECT top 1 * FROM catalog.event_messages em 
WHERE ((em.operation_id = @executionIdFilter) OR @executionIdFilter IS NULL) 
--AND (em.event_name IN ('OnInformation', 'OnError', 'OnWarning')) 
AND (package_path LIKE CASE WHEN @showOnlyChildPackages = 1 THEN '\Package' ELSE '%' END) 
AND (em.message_source_name like @messageSourceName) 
order by operation_id desc,message_time desc 
) 
b on a.execution_id = b.operation_id 
相關問題