日期:2014-05-19  浏览次数:20537 次

删除本数据库所有作业(jobs)的T-SQL语句(求更好的办法)
删除本数据库所有作业(jobs)的T-SQL语句.

我的做法
--Delect   all   jobs   in   this   server!--
use   msdb
declare   jobs_cursor   cursor  
  for  
          select   job_id   from   msdb.dbo.sysjobservers
open   jobs_cursor
declare   @t_job_id   uniqueidentifier
fetch   next   from   jobs_cursor   into   @t_job_id
WHILE   (@@fetch_status <> -1)
BEGIN
EXEC   sp_delete_job   @job_id=@t_job_id
fetch   next   from   jobs_cursor   into   @t_job_id
END
deallocate   jobs_cursor



------解决方案--------------------
好像只能向lz这样做
------解决方案--------------------
--或者

declare @sql varchar(8000)
Select @sql=isnull(@sql, ' ')+ 'EXEC msdb.dbo.sp_delete_job ' ' '+rtrim(job_id)
+ ' ' ' '+Char(13)from msdb.dbo.sysjobservers
exec(@sql)
------解决方案--------------------
sp_delete_job 是这样删除的。


-------
...
INSERT INTO #temp_jobs_to_delete
SELECT job_id, (SELECT COUNT(*)
FROM msdb.dbo.sysjobservers
WHERE (job_id = @job_id)
AND (server_id = 0))
FROM msdb.dbo.sysjobs_view
WHERE (job_id = @job_id)
.....
-- Delete all traces of the job
BEGIN TRANSACTION

DELETE FROM msdb.dbo.sysjobs
WHERE job_id IN (SELECT job_id FROM #temp_jobs_to_delete)

DELETE FROM msdb.dbo.sysjobservers
WHERE job_id IN (SELECT job_id FROM #temp_jobs_to_delete)

DELETE FROM msdb.dbo.sysjobsteps
WHERE job_id IN (SELECT job_id FROM #temp_jobs_to_delete)

DELETE FROM msdb.dbo.sysjobschedules
WHERE job_id IN (SELECT job_id FROM #temp_jobs_to_delete)

IF (@delete_history = 1)
DELETE FROM msdb.dbo.sysjobhistory
WHERE job_id IN (SELECT job_id FROM #temp_jobs_to_delete)

COMMIT TRANSACTION
------解决方案--------------------
学习 接分
------解决方案--------------------
不懂 友情UP