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的公製表。這張表保留了上次伺服器啟動的日期和時間。一旦建立了這個基本的架構,我就建立預存程序,在伺服器啟動時,這個預存程序將用於把日期和時間插入到表中。注意,預存程序是在主從資料庫上建立的。