误删除SSIS中的“Maintenance Plans”文件夹的恢复

SQL Server 2005/2008中,维护计划的功能通过SSIS包来完成。如果不小心在SSIS管理中删除了"Maintenance Plans"文件夹,则在SQL Server中建立维护计划的时候会出现问题,如下图所示。

误删除SSIS中的“Maintenance Plans”文件夹的恢复

在Management studio中创建误删除的"Maintenance Plans"文件夹,如下图所示。

误删除SSIS中的“Maintenance Plans”文件夹的恢复

建立好"Maintenance Plans"文件夹之后,可以正常建立维护计划,但是建立的维护计划并不会显示,在SSIS的"Maintenance Plans"文件夹下倒是可以找到相应的SSIS包。

误删除SSIS中的“Maintenance Plans”文件夹的恢复

出现这个问题的原因在于:维护计划向导根据文件夹名称来存储维护计划的SSIS包,但"维护计划"通过查询视图"sysmaintplan_plans"来获取维护计划相关的SSIS包的,查询这个视图的脚本,可以看到其内容

EXEC msdb..sp_helptext 'sysmaintplan_plans'

CREATE VIEW sysmaintplan_plans

AS

SELECT

...

FROM

msdb.dbo.sysssispackages AS s

WHERE

(s.folderid = '08aa12d5-8f98-4dab-a4fc-980b150a5dc8' and s.packagetype = 6)

从视图脚本可以看出,视图使用了folderid,而不是名称来获取内容,我们新建的"Maintenance Plans"文件夹基本上不可能是这个id,所以要更新这个视图,使其引用正确的folder id,正常的folder id可以执行下面的查询获得。

SELECT *

FROM msdb.dbo.sysssispackagefolders-- sql 2005 的表名为:sysdtsfolders90

WHERE foldername = N'Maintenance Plans'

AND parentfolderid = '00000000-0000-0000-0000-000000000000'