Sql-Server

WHERE NAME LIKE ( A SET OF NAMES )

  • August 7, 2015

我想放棄與一組特定數據庫相關的所有工作。

因此,我已將所有名稱添加到表變數中,並嘗試生成腳本以刪除作業。

我怎樣才能做到這一點?

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(…) 替換為表變數或真實表。

引用自:https://dba.stackexchange.com/questions/109347