如何检查 SSIS 包是否已连接到服务器

问题描述

我是 SSIS 的新手,我有几个问题请帮助我。

  1. 如何检查哪个解决方案连接到服务器来运行包,因为作业提取的包不起作用,我已经在 prod 服务器中运行了该包,并且运行良好。
  2. 如何检查从服务器中选择了哪个 ISPAC 文件/

谢谢

解决方法

此查询将为您提供服务器上运行的所有包的包和作业名称。

;WITH CTE1 AS (
SELECT 
    J.job_id,JobName = J.name,JS.step_id,JS.step_name,JS.command,StartIndex = 
        CASE 
            WHEN JS.command LIKE '/DTS%' OR JS.command LIKE '/SQL%' OR JS.command LIKE '/ISSERVER%' THEN CHARINDEX('\',CHARINDEX('\',JS.command) + 1) --'
            WHEN JS.command LIKE '/SERVER%' THEN CHARINDEX('"',JS.Command,CHARINDEX(' ',command,command) + 1) + 1) + 1
            ELSE 0
        END,EndIndex = 
        CASE 
            WHEN JS.command LIKE '/DTS%' OR JS.command LIKE '/SQL%'  OR JS.command LIKE '/ISSERVER%' 
                THEN  CHARINDEX('"',JS.command) + 1)) --'
                    - CHARINDEX('\',JS.command) + 1) - 1 --'
            WHEN JS.command LIKE '/SERVER%' 
                THEN  CHARINDEX('"',CHARINDEX('"',command) + 1) + 1) + 1)
                    - CHARINDEX('"',command) + 1) + 1) - 1
            ELSE 0
        END
FROM msdb.dbo.sysjobsteps JS
INNER JOIN msdb.dbo.sysjobs J
    ON JS.job_id = J.job_id
WHERE JS.subsystem = 'SSIS'
 )    
   SELECT 
  C1.job_id,C1.JobName,C1.step_id,C1.step_name,PackageFolderPath = 
    CASE 
        WHEN C1.command LIKE '/DTS%' OR C1.command LIKE '/ISSERVER%' THEN 
         SUBSTRING(C1.command,C1.StartIndex,C1.EndIndex)
        WHEN C1.command LIKE '/SQL%' THEN '\MSDB' + SUBSTRING(C1.command,C1.EndIndex)
        WHEN C1.command LIKE '/SERVER%' THEN '\MSDB\' + SUBSTRING(C1.command,C1.EndIndex)
        ELSE NULL
    END,C1.command
      FROM CTE1 C1
      ORDER BY C1.job_id,C1.step_id