sql Server提供了系統存儲過程sp_procoption,這個存儲過程可以用於當SQL Server服務啟動時指派一個或者多個存儲過程自動執行。這是一個很不錯的選擇,它可以用於多種多樣的用途。比如,你可能在你的數據庫中有開銷很大的查詢,這個查詢在首次執行時會花費一些時間。通過使用sp_procoption,你可以在服務器啟動時運行這個查詢以此來預先編譯執行計劃,由此,你的某個用戶就不會成為第一個運行這個特殊查詢的不幸的人。我曾經用這個功能建立了一個我自己寫的概要分析器服務器端跟蹤的自動執行功能,這個跟蹤功能成為服務器啟動時被設置成自動執行的存儲過程的一部分。
代碼如下:
sp_procoption Parameters
exec sp_procoption @ProcName = ['stored procedure name'],
@OptionName = 'STARTUP',
@OptionValue = [on|off]
以下是sp_procoption存儲過程參數的解釋:
l 參數@ProcName的意思是明顯的,它是被標記成自動執行的過程的名稱。
l 參數@OptionName是可選用項,唯一有效的選項是STARTUP。
l 參數@OptionValue切換自動執行的開與關。
使用有特定限制的sp_procoption:
l 你必須以系統管理員的身份登錄服務器並使用sp_procoption。
l 你只能指派標准存儲過程、擴展存儲過程或者CLR存儲過程來啟動。
l 存儲過程必須在主從數據庫上。
l 存儲過程不能要求任何輸入參數或者返回任何輸出參數。
在下面的例子中,我創建一個存儲過程,每次啟動我的SQL Server實例時,這個存儲過程就自動執行。這個存儲過程的目的是在記錄服務啟動時間的數據庫表中寫一行。通過這張數據庫表,我產生一個獲得服務器正常運行時間的想法。以下的腳本創建了一個新的數據庫,這個數據庫存儲了一張叫做SERVER_STARTUP_LOG的公制表。這張表保留了上次服務器啟動的日期和時間。一旦建立了這個基本的架構,我就創建存儲過程,在服務器啟動時,這個存儲過程將用於把日期和時間插入到表中。注意,存儲過程是在主從數據庫上創建的。
當前1/2頁
12下一頁