SQL Server代理作业 - 存在然后删除?

mad*_*lor 54 sql sql-server sql-server-agent sql-job

如果(并且仅当)它存在,我如何删除sql server代理作业?

这是一个运行良好的存储过程脚本.如何对sql server agent作业执行相同的操作?

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[storedproc]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
    drop procedure [dbo].[storedproc]
GO
CREATE PROCEDURE [dbo].[storedproc] ...
Run Code Online (Sandbox Code Playgroud)

Cod*_*rks 86

尝试这样的事情:

DECLARE @jobId binary(16)

SELECT @jobId = job_id FROM msdb.dbo.sysjobs WHERE (name = N'Name of Your Job')
IF (@jobId IS NOT NULL)
BEGIN
    EXEC msdb.dbo.sp_delete_job @jobId
END

DECLARE @ReturnCode int
EXEC @ReturnCode =  msdb.dbo.sp_add_job @job_name=N'Name of Your Job'
Run Code Online (Sandbox Code Playgroud)

最好阅读'sp_add_job''sp_delete_job'所需的所有参数的文档


小智 21

IF EXISTS (SELECT job_id 
            FROM msdb.dbo.sysjobs_view 
            WHERE name = N'Your Job Name')
EXEC msdb.dbo.sp_delete_job @job_name=N'Your Job Name'
                            , @delete_unused_schedule=1
Run Code Online (Sandbox Code Playgroud)