SQL 2005 データベースでログ配布を無効にし、セカンダリ サーバーでログ配布 DB を削除しました。ただし、T-SQL (sp_delete_log_shipping_primary_secondary、sp_delete_job) またはセカンダリ サーバーで管理スタジオを使用しても、LSRestore_DB___ ジョブを削除できません。それはただ行きません。クエリは 7 時間ほど実行され続けます。無効にしてみましたが、まだ削除されません。サーバーも再起動しました。また、誰でもこのSQLジョブを削除するのを手伝ってくれますか?
2 に答える
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';`
于 2013-10-31T06:30:42.390 に答える
0
システムテーブルの編集を許可するように設定し、ジョブ情報を保持するシステムテーブルに直接移動して、そこから行を削除してみましたか?
これを行うときは特に注意する必要がありますが、推奨されませんが、システムテーブルを直接編集する必要がある場合があります。
于 2009-11-25T10:15:02.160 に答える