C-Sharp
使用 SQL Server 2008 和儲存過程進行日常數據庫維護
通過SQL Server 2005 的連結,我已經使用嚮導創建了一個數據庫維護計劃。
我已經為 SQL Server 2008 創建了一個維護計劃,它執行良好。
現在我需要為我的桌面應用程序使用儲存過程來完成相同的任務。
我已經為此嘗試過這個儲存過程,但它對我不起作用。
儲存過程執行成功,我也可以在系統數據庫的表
sysdbmaintplans
中 看到輸入的值,msdb
但創建的維護計劃不顯示對象資源管理器(SQL Server Management Studio)的樹下(管理=>維護計劃)。請幫忙…
下面是我嘗試過的程式碼片段。
// sp_add_maintenance_plan [ @plan_name = ] 'plan_name' , //@plan_id = 'plan_id' OUTPUT String planid = ""; string maintenancePlan = "MyMaintenance"; string SQLstr = "DECLARE @plan_id as Varchar(50)"; SQLstr += " EXEC sp_add_maintenance_plan "; SQLstr += " @plan_name='" + maintenancePlan + "',"; SQLstr += " @plan_id= @plan_id OUTPUT"; SQLstr += " SELECT @plan_id"; SqlConnection cnn = new SqlConnection(MSDBconnStr); SqlCommand cmd = new SqlCommand(SQLstr, cnn); cnn.Open(); planid = (string)cmd.ExecuteScalar(); cnn.Close(); // sp_add_maintenance_plan_db [ @plan_id = ] 'plan_id' , //[ @db_name = ] 'database_name' string maintenancePlanDataBase = "MyDataBase"; string SQLstr1 = " EXEC sp_add_maintenance_plan_db "; SQLstr1 += " @plan_id='" + planid + "',"; SQLstr1 += " @db_name='" + maintenancePlanDataBase + "'"; SqlConnection cnn1 = new SqlConnection(MSDBconnStr); SqlCommand cmd1 = new SqlCommand(SQLstr1, cnn1); cnn1.Open(); cmd1.ExecuteNonQuery(); cnn1.Close();
不要使用維護計劃,而是查看Ola Hallengren 的免費維護儲存過程。它們比維護計劃更強大,並且不需要 SSMS(根據您的要求)來實施。您可以使用任何 T-SQL 連接來設置它們。
專門解決你的問題。聽起來您的桌面版本大於 SQL 2008,並且該計劃很可能隱藏在 SSIS 結構中。(並且 sp_add_maintenance_plan_db 可能已被棄用)。我將使用您的計劃 ID 嘗試以下操作,以在您的 SQL Server 的較新版本中公開該計劃。(請讓我們知道您桌面上的 SQL Server 版本)。
EXECUTE sp_add_maintenance_plan N'Myplan',@plan_id=@myplan_id OUTPUT