Verificar trabalhos em execução em um banco de dados SQL 2000

1

Eu tenho um procedimento armazenado que está sendo executado por um trabalho desconhecido. Então, estou tentando descobrir onde os dados são armazenados no SQL 2000 que mostra quais tarefas pertencem a qual banco de dados. A razão é que eu tenho um trabalho em execução que o nome do trabalho não tem o nome do banco de dados nele. Todos os trabalhos devem ser algo como 'Nome do trabalho - dbName'.

Mas, por alguma razão, sou A: não é possível vê-lo do Enterprise Manager ou B: o sproc está sendo executado por outro trabalho. Embora quando eu procuro todos os procedimentos para esse nome de procedimento no controle de origem, eu só encontro o nome dele naquele sproc.

Eu olhei na tabela msdb.sysjobs e isso me dá nomes de jon, id de trabalho e outras informações, mas não o nome do banco de dados que está sendo executado. Estou apenas lutando para descobrir isso.

    
por Tim Meers 22.07.2009 / 15:37

3 respostas

1

Esta consulta lhe dará todas as instâncias do seu proc em seus trabalhos e qual banco de dados a etapa que chama o proc está correndo contra, com uma ressalva: não lhe dirá se há um trabalho que está executando um Pacote SSIS que chama seu 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
    
por 22.07.2009 / 17:52
1

As informações do banco de dados são armazenadas em sysjobsteps, não em sysjobs. Você também desejará verificar a coluna de comando em sysjobsteps para procurar código como:

exec mydatabase.dbo.some_procedure

    
por 22.07.2009 / 17:47
0

Você pode colocar um rastreio no banco de dados com o SQL Profiler, filtrar com base no nome do sproc e procurar na coluna DB.

    
por 22.07.2009 / 17:12

Tags