我有一个由未知作业执行的存储过程。因此,我试图找出数据在 SQL 2000 中的存储位置,以显示哪些作业属于哪个数据库。原因是我有一个正在运行的作业,该作业名称中没有数据库名称。所有的工作都应该类似于“工作名称 - dbName”。
但由于某种原因,我要么是 A:无法从企业管理器中看到它,要么是 B:存储过程正在由另一个作业执行。虽然当我在源代码管理中搜索该过程名称的所有过程时,我只能在那个存储过程中找到它的名称。
我查看了 msdb.sysjobs 表,它给出了 jon 名称、作业 ID 和其他信息,但没有给出它正在执行的数据库名称。我只是在努力解决这个问题。
数据库信息存储在 sysjobsteps 中,而不是 sysjobs 中。您还需要检查 sysjobsteps 中的命令列以查找如下代码:
执行 mydatabase.dbo.some_procedure
此查询将为您提供作业中 proc 的所有实例以及调用 proc 的步骤正在运行的数据库,但需要注意的是:它不会告诉您是否有作业正在执行 SSIS 包调用你的过程。
您可以使用 SQL Profiler 对 DB 进行跟踪,根据存储过程名称进行过滤,然后查看 DB 列。