我在SQL Agent上安排了一个夜间SQL Server作业。
它使用了许多数据库,存储过程和表。
获取这些列表的最佳方法是什么?
(其SQL Server 2000)
答案 0 :(得分:2)
您可以使用以下查询获取作业每个步骤的命令文本:
SELECT sj.name AS job_name
,sjs.step_id
,sjs.step_name
,sjs.command
FROM msdb.dbo.sysjobs AS sj
JOIN msdb.dbo.sysjobsteps AS sjs
ON sj.job_id = sjs.job_id
WHERE sj.name = '~your job name~'
AND sjs.subsystem = 'TSQL'
ORDER BY sj.name
,sjs.step_id
然后,您可以搜索每个作业步骤的命令文本以查找数据库,表和存储过程名称。如果您的对象具有一致的命名约定(例如,表名开始t_,存储过程名称启动usp_),这会更简单。请务必在搜索中排除评论。
正则表达式库使此任务更容易,但对它们的支持不包含在本机T-SQL中。有more than one way可以将regular expression support添加到SQL 2000,或者您可以使用其他语言/工具来执行搜索。
不幸的是,根据T-SQL命令的复杂性,在没有编写(或购买)T-SQL解析器的情况下,可能没有100%保证识别对象名称的方法。