SQL Server 2012を使用していますが、SQLジョブを削除する必要がある場合があります。私は次の2つのアプローチを見つけました:
アプローチ1
DECLARE @jobId binary(16)
WHILE (1=1)
BEGIN
SET @jobId = NULL
SELECT TOP 1 @jobId = job_id FROM msdb.dbo.sysjobs WHERE (name like N'Abc%')
IF @@ROWCOUNT = 0
BREAK
IF (@jobId IS NOT NULL)
BEGIN
EXEC msdb.dbo.sp_delete_job @jobId
END
END
アプローチ2
DECLARE @listStr VARCHAR(MAX)=null
SELECT @listStr = COALESCE(@listStr+'exec msdb.dbo.sp_delete_job ' ,'') + '''' + convert(varchar(max),job_id) + '''; '
FROM msdb.dbo.sysjobs WHERE (name like N'$(TestPublisherServer)-$(TestPublisherDB)%')
IF @listStr is not null
BEGIN
PRINT 'exec msdb.dbo.sp_delete_job ' + @listStr
EXEC ('exec msdb.dbo.sp_delete_job ' + @listStr)
END
どちらの方法でもジョブが削除されますが、どちらが最善の方法であるかを知りたいので、ジョブを削除するためのより効率的または正しい方法を提案してください。
そしてもう1つの質問は、ジョブを削除する前にジョブを停止/無効にする必要があるかどうかです。
TIAハーシャ