在 SQL Server 2005/2008 中,維護計畫底層以 SSIS 套件實現。若在 SSMS 的「整合服務」節點下誤刪「Maintenance Plans」資料夾,後續在「管理」→「維護計畫」建立新計畫時會報錯,雖然 SSIS 套件實際建立成功,但 UI 介面無法列出現有計畫。
維護計畫精靈依資料夾名稱存放 SSIS 套件,但「維護計畫」UI 介面透過系統檢視 msdb.dbo.sysmaintplan_plans 讀取計畫清單。該檢視實際依據 folderid (GUID) 而非名稱篩選:
CREATE VIEW sysmaintplan_plans AS
SELECT ... FROM msdb.dbo.sysssispackages
WHERE folderid = '08AA12D5-8F98-4DAB-A4FC-980B150A5DC8' AND packagetype = 6;
手動重建的資料夾 GUID 必定不同,導致檢視查無資料,UI 顯示空白。
Maintenance Plans。SELECT folderid
FROM msdb.dbo.sysssispackagefolders -- SQL 2005 為 sysdtsfolders90
WHERE foldername = N'Maintenance Plans'
AND parentfolderid = '00000000-0000-0000-0000-000000000000';
sysmaintplan_plans 檢視定義中的舊 GUID。需使用 ALTER VIEW 或修改系統物件(需啟用允許更新系統目錄,謹慎操作)。建議改為建立同名替代檢視或透過應用層邏輯繞過,避免直接修改系統物件風險。若不願動系統檢視,可採用以下變通:
msdb.dbo.sysssispackages 並以 foldername 關聯 sysssispackagefolders 獲取計畫清單。msdb 資料庫,含系統資料表資料。誤刪 SSIS 維護計畫資料夾屬常見誤操作,核心在於 UI 顯示邏輯依賴固定 GUID 而非名稱。修復關鍵在於同步資料夾 GUID 與系統檢視定義,或採用替代查詢路徑。理解底層機制,臨危不亂,快速恢復業務。