共用方式為


自動執行預存程序

標示為自動執行的預存程序是在每次 SQL Server 啟動時執行。若要定期執行某些作業,或要將預存程序當成背景處理序執行,並且讓它隨時執行中,這個功能就非常有用。自動執行預存程序的另一個用處就是讓預存程序執行 tempdb 中的系統或維護工作,如建立全域的暫存資料表等。這樣可確保在啟動 SQL Server 重新建立 tempdb 時,這個暫存資料表一定會存在。

自動執行的預存程序運作時所使用的權限與系統管理員 (sysadmin) 固定伺服器角色的成員相同。預存程序所產生的任何錯誤訊息都會寫到 SQL Server 錯誤記錄檔中。請不要從自動執行的預存程序傳回任何結果集。因為這類預存程序是由 SQL Server 而非使用者執行,所以結果集會無處可去。

預存程序的執行會在 master 資料庫啟動時被復原後開始。

設定、清除和控制自動執行

只有系統管理員 (sa) 可以將預存程序標示為自動執行。此外,該預存程序必須位於 master 資料庫中,由 sa 所擁有,並且不能有輸入或輸出參數。

使用 sp_procoption 可以:

  • 指定一個現有的預存程序作為啟動程序。

  • 停止某個程序在 SQL Server 啟動時執行。

雖然是個別設定要自動執行的預存程序,但只要使用 sp_configure 設定 SQL Server 的 scan for startup procs 組態選項,啟動 SQL Server 時就不會自動執行任何預存程序。若要略過啟動這些預存程序,請指定追蹤旗標 4022 作為啟動參數。如果您是以最低組態 (使用 -f 旗標) 啟動 SQL Server,啟動預存程序就不會被執行。如需詳細資訊,請參閱<追蹤旗標>。

最佳策略

對於您能擁有的啟動程序數量並沒有限制,但請留意每一程序執行時都會佔用掉一個工作者執行緒。如果您在啟動時必須執行多個程序但是並不需要同時執行它們,那麼您可以讓某一個程序成為啟動程序並且讓它叫用其他的程序。這樣就只會使用一個工作者執行緒。

若要設定或清除自動執行預存程序

若要設定或清除 scan for startup procs 組態選項