在SQL Server 2005/2008中,維護計劃的功能通過SSIS包來完成。如果不小心在SSIS管理中刪除了"Maintenance Plans"文件夾,則在SQL Server中建立維護計劃的時候會出現問題,如下圖所示。
在Management studio中創建誤刪除的"Maintenance Plans"文件夾,如下圖所示。
建立好"Maintenance Plans"文件夾之後,可以正常建立維護計劃,但是建立的維護計劃並不會顯示,在SSIS的"Maintenance Plans"文件夾下倒是可以找到相應的SSIS包。
出現這個問題的原因在於:維護計劃向導根據文件夾名稱來存儲維護計劃的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'