我正在尝试从SQL Server中获取以下信息:
使用下表,我能够毫无问题地提取所有这3条信息:
不幸的是,我无法在这两个表之间找到关联,无法将所有3条信息汇总在一起。
有任何想法吗?谢谢!
对于Microsoft来说,这似乎是一个明显的漏洞-如果将PackageId存储在msdb.dbo.sysjobsteps
表中会更好,而不必从“命令”列中解析信息。正如OP正确指出的那样,当程序包名称相同时,这可能会出现问题。无论如何,我一直在致力于提供以下内容的查询:
-获取作业指向的包的文件夹路径。这将所有内容整合在一起。
;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('\',JS.command, CHARINDEX('\',JS.command) + 1) --'
WHEN JS.command LIKE '/SERVER%' THEN CHARINDEX('"', JS.Command, CHARINDEX(' ',command, CHARINDEX(' ',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, CHARINDEX('\',JS.command, CHARINDEX('\',JS.command) + 1)) --'
- CHARINDEX('\',JS.command, CHARINDEX('\',JS.command) + 1) - 1 --'
WHEN JS.command LIKE '/SERVER%'
THEN CHARINDEX('"',command, CHARINDEX('"', JS.Command, CHARINDEX(' ',command, CHARINDEX(' ',command) + 1) + 1) + 1)
- CHARINDEX('"', JS.Command, CHARINDEX(' ',command, 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.StartIndex, C1.EndIndex)
WHEN C1.command LIKE '/SERVER%' THEN '\MSDB\' + SUBSTRING(C1.command, C1.StartIndex, C1.EndIndex)
ELSE NULL
END
, C1.command
FROM CTE1 C1
ORDER BY C1.job_id, C1.step_id
Run Code Online (Sandbox Code Playgroud)
小智 5
尝试这个,
select
--Job Information
a.job_id
,a.name
,a.description
--SSIS package Information
,b.name
,b.id
,b.description
--Job steps Information
,js.step_id
,js.step_name
,js.subsystem
,js.command
from msdb.dbo.sysjobs a
Left Join msdb.dbo.sysjobsteps js on js.job_id=a.job_id
left join msdb.dbo.sysssispackages b
on a.name=b.name
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
12156 次 |
最近记录: |