validation在SQL 2000数据库上运行的作业

我有一个存储过程正在执行未知的作业。 所以我想弄清楚数据存储在SQL 2000中的哪个位置显示哪些作业属于哪个数据库。 原因是我有一个作业运行,作业名称中没有数据库名称。 所有的工作应该像“工作名称 – dbName”。

但由于某种原因,我要么是A:不能看到它的企业pipe理器,或B:正在执行其他工作的sproc。 尽pipe当我在源代码控制中search该过程名称的所有过程时,我只能在该过程中find它的名称。

我查看了msdb.sysjobs表,这给了我jon名字,作业ID和其他信息,但不是它正在执行的数据库名称。 我正在努力弄清楚这一点。

这个查询会给你所有你的工作中的proc实例,以及哪个数据库调用proc的步骤正在运行,但有一个警告:它不会告诉你是否有一个工作正在执行一个SSIS包,调用你的proc。

SELECT jobs.NAME AS JobName, steps.step_id AS StepID, steps.step_name AS StepName, steps.database_name AS DatabaseForJobStep FROM msdb..sysjobsteps steps JOIN msdb..sysjobs jobs ON steps.job_id=jobs.job_id WHERE steps.command LIKE '%p_mystoredprocname%' ORDER BY jobs.NAME,Steps.step_id 

数据库信息存储在sysjobsteps中,而不是sysjobs。 您还需要检查sysjobsteps中的命令列来查找代码:

exec mydatabase.dbo.some_procedure

您可以使用SQL Profiler在数据库上添加跟踪,根据存储区名称进行过滤,然后查看数据库列。