如何知道作业是否在SQL Server 2000中运行?

时间:2017-11-17 15:52:15

标签: sql-server

我需要知道作业是否在SQL Server 2000中运行,所以我可以使用msdb.dbo.sp_stop_job来停止它。  我发现这个代码在2005年有效:

IF EXISTS(     
            select 1 
            from msdb.dbo.sysjobs_view job  
            inner join msdb.dbo.sysjobactivity activity on job.job_id = activity.job_id 
            where  
                activity.run_Requested_date is not null  
                and activity.stop_execution_date is null  
                and job.name = 'myjobname' 
            ) 
    BEGIN      

        EXEC msdb.dbo.sp_stop_job  @name_job; 
    END 

但是,在SQL 2000中msdb.dbo.sysjobactivity表不存在。什么是替代解决方案?

感谢。

1 个答案:

答案 0 :(得分:0)

我认为你说没有研究有点苛刻,所以我会给你一块骨头......下一次,花费10-15分钟谷歌搜索,你最终可能会遇到这种情况。

试试这个......

DECLARE @jobname VARCHAR(100)

SET @jobname='my job name'

IF OBJECT_ID('tempdb..#jobs') IS NOT NULL DROP TABLE #jobs

CREATE TABLE #jobs (JOB_ID UNIQUEIDENTIFIER, LAST_RUN_DATE INT, LAST_RUN_TIME INT, NEXT_RUN_DATE INT, NEXT_RUN_TIME INT, NEXT_RUN_SCHEDULE_ID INT, REQUESTED_TO_RUN INT, REQUEST_SOURCE INT, REQUEST_SOURCE_ID VARCHAR(100), RUNNING INT, CURRENT_STEP INT, CURRENT_RETRY_ATTEMPT INT, STATE INT)       

INSERT INTO #jobs EXEC MASTER.DBO.XP_SQLAGENT_ENUM_JOBS 1,NOTHING 

SELECT *
FROM #jobs e
JOIN MSDB..SYSJOBS j ON e.JOB_ID=j.JOB_ID
WHERE RUNNING=1
--AND j.name=@jobname