如何使用T SQL删除维护计划?

时间:2018-07-06 14:42:19

标签: sql-server tsql sql-server-2012

我有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脚本会更好吗?

2 个答案:

答案 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