我有87台服务器,每台服务器都有维护计划,需要删除这些计划以替换为代理作业。这是我尝试过的:
DECLARE @planId UNIQUEIDENTIFIER;
select @planId = p.id
from msdb..sysmaintplan_plans p
where p.name LIKE 'Night%';
PRINT @planId;
EXEC msdb..sp_delete_maintenance_plan @planId;
以及我得到的结果:
E0BC518C-CFD4-4BB0-A843-74B61B22B72E
消息14262,级别16,状态1,过程sp_delete_maintenance_plan, 第12行[Batch Start Line 3]指定的@plan_id ('E0BC518C-CFD4-4BB0-A843-74B61B22B72E')不存在。
我该如何使用它? Powershell脚本会更好吗?
答案 0 :(得分:0)
除了sp_delete_job外,您可能还想看看sp_ssis_deletepackage,但是没有记录。尝试使用Profiler来查看删除维护计划时的内容。
答案 1 :(得分:0)
我已经通过以下方式解决了这个问题:
declare @folder_id uniqueidentifier
declare @plan_id uniqueidentifier
declare @plan_name nvarchar (100) = 'Plan Name'
select @plan_id = id from msdb.dbo.sysmaintplan_plans where [name] = @plan_name
select @folder_id = folderid from msdb.dbo.sysssispackages where name = @plan_name
exec msdb.[dbo].sp_ssis_deletepackage @plan_name,@folder_id
exec msdb.[dbo].[sp_maintplan_delete_plan] @plan_id