首页 > 解决方案 > 如何使用 T SQL 删除维护计划?

问题描述

我有 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 行 [批处理开始第 3 行] 指定的 @plan_id ('E0BC518C-CFD4-4BB0-A843-74B61B22B72E') 不存在。

我怎样才能让它工作?PowerShell脚本会更好吗?

标签: sql-servertsqlsql-server-2012

解决方案


我已经通过这个解决了这个问题:

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

推荐阅读