我已禁用SQL 2005数据库上的日志传送,并删除了辅助服务器上的日志传送DB。但是,我无法通过T-SQL(sp_delete_log_shipping_primary_secondary,sp_delete_job)或使用辅助服务器上的管理工作室删除LSRestore_DB___作业。它不会去。查询持续执行了7个小时。 尝试禁用,仍然不删除。也重新启动了服务器。还尝试过任何人都可以帮我删除这个SQL工作吗?
答案 0 :(得分:1)
有一篇好文章Can’t Delete Jobs。在文章中作者提供了一个解决问题的脚本,干得好!
`CREATE PROC dbo.DropJob
@JobName AS VARCHAR(200) = NULL
AS
DECLARE @msg AS VARCHAR(500);
IF @JobName IS NULL
BEGIN
SET @msg = N'A job name must be supplied for parameter @JobName.';
RAISERROR(@msg,16,1);
RETURN;
END
IF EXISTS (
SELECT subplan_id FROM msdb.dbo.sysmaintplan_log WHERE subplan_id IN
( SELECT subplan_id FROM msdb.dbo.sysmaintplan_subplans WHERE job_id IN
(SELECT job_id FROM msdb.dbo.sysjobs_view WHERE name = @JobName)))
BEGIN
DELETE FROM msdb.dbo.sysmaintplan_log WHERE subplan_id IN
( SELECT subplan_id FROM msdb.dbo.sysmaintplan_subplans WHERE job_id IN
(SELECT job_id FROM msdb.dbo.sysjobs_view WHERE name = @JobName));
DELETE FROM msdb.dbo.sysmaintplan_subplans WHERE job_id IN
(SELECT job_id FROM msdb.dbo.sysjobs_view WHERE name = @JobName);
EXEC msdb.dbo.sp_delete_job @job_name=@JobName, @delete_unused_schedule=1;
END
ELSE IF EXISTS (
SELECT subplan_id FROM msdb.dbo.sysmaintplan_subplans WHERE job_id IN
(SELECT job_id FROM msdb.dbo.sysjobs_view WHERE name = @JobName))
BEGIN
DELETE FROM msdb.dbo.sysmaintplan_subplans WHERE job_id IN
(SELECT job_id FROM msdb.dbo.sysjobs_view WHERE name = @JobName);
EXEC msdb.dbo.sp_delete_job @job_name=@JobName, @delete_unused_schedule=1;
END
ELSE
BEGIN
EXEC msdb.dbo.sp_delete_job @job_name=@JobName, @delete_unused_schedule=1;
END
GO`
现在您可以使用以下内容调用SP;
`USE [msdb];
EXEC dbo.DropJob @JobName = N'Shrink_AWP_Databases.Subplan_1';`
答案 1 :(得分:0)
您是否已尝试设置允许编辑系统表,并直接进入包含作业信息的系统表并尝试从那里删除行?
确保在执行此操作时非常额外,不推荐,但有时需要直接编辑到系统表。