Sql-Server
WHERE NAME LIKE ( A SET OF NAMES )
我想放棄與一組特定數據庫相關的所有工作。
因此,我已將所有名稱添加到表變數中,並嘗試生成腳本以刪除作業。
我怎樣才能做到這一點?
use msdb go DECLARE @R TABLE ( NAME VARCHAR(108) NOT NULL PRIMARY KEY CLUSTERED) INSERT INTO @R(NAME) SELECT 'UK15SUMMProduct' UNION ALL SELECT 'US15SUMMProduct' UNION ALL SELECT 'DE15SUMMProduct' UNION ALL SELECT 'AT15SUMMProduct' UNION ALL SELECT 'FR15SUMMProduct' UNION ALL SELECT 'EU15SUMMProduct' UNION ALL SELECT 'AU15SUMMProduct' UNION ALL SELECT 'UK15SUMSProduct' UNION ALL SELECT 'US15SUMSProduct' UNION ALL SELECT 'DE15SUMSProduct' UNION ALL SELECT 'AT15SUMSProduct' UNION ALL SELECT 'FR15SUMSProduct' UNION ALL SELECT 'EU15SUMSProduct' UNION ALL SELECT 'AU15SUMSProduct' SELECT S.* FROM SYSJOBS S WHERE NAME LIKE ( SELECT NAME FROM @R)
類似於上面的選擇,我想查看所有包含數據庫名稱的作業並刪除它們,例如,如下面的腳本:
exec sp_delete_job @job_name = 'WebFeed UK15SUMMProduct', @delete_unused_schedule = 0
這是整個查詢:
Declare @job sysname Declare jobs_cursor Cursor For Select S.name From msdb.dbo.SYSJOBS S Inner Join (values ('UK15SUMMProduct') , ('US15SUMMProduct') , ('DE15SUMMProduct') , ('AT15SUMMProduct') , ('FR15SUMMProduct') , ('EU15SUMMProduct') , ('AU15SUMMProduct') , ('UK15SUMSProduct') , ('US15SUMSProduct') , ('DE15SUMSProduct') , ('AT15SUMSProduct') , ('FR15SUMSProduct') , ('EU15SUMSProduct') , ('AU15SUMSProduct') ) as n(name) on S.name like '%'+n.name + '%' Open jobs_cursor Fetch Next From jobs_cursor into @job While @@Fetch_Status = 0 Begin Print 'Remove: '+@job exec sp_delete_job @job_name = @job, @delete_unused_schedule = 0 Fetch Next From jobs_cursor into @job End Close jobs_cursor Deallocate jobs_cursor
其中一部分類似於以前的答案。
您可以將 values(…) 替換為表變數或真實表。