读书人

删除本数据库所有作业(jobs)的T-SQL语

发布时间: 2012-02-05 12:07:15 作者: rapoo

删除本数据库所有作业(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

读书人网 >SQL Server

热点推荐