建立自動執行儲存過程
GPS平臺、網站建設、軟體開發、系統運維,找森大網路科技!
https://cnsendnet.taobao.com
來自森大科技官方部落格
http://www.cnsendblog.com/index.php/?p=1875
每次 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,則將不執行啟動儲存過程。有關更多資訊,請參見跟蹤標記。
最佳方法
雖然對啟動過程的數目沒有限制,但是請注意,在執行時每個啟動過程將佔用一個工作執行緒。如果必須在啟動時執行多個過程,但不需要並行執行,則可以指定一個過程作為啟動過程,讓該過程呼叫其他過程。這樣就只佔用一個工作執行緒。
設定或清除自動執行的儲存過程
- sp_procoption (Transact-SQL)
設定或清除 scan for startup procs 配置選項
- sp_configure (Transact-SQL)
- 設定自動執行的儲存過程。設定為自動執行的儲存過程在每次啟動 SQL Server 例項時執行。
- Transact-SQL 語法約定
· 語法
sp_procoption [ @ProcName = ] 'procedure' , [ @OptionName = ] 'option' , [ @OptionValue = ] 'value' |
· 引數
- [ @ProcName = ] 'procedure'
- 為其設定選項的過程的名稱。 procedure 的資料型別為 nvarchar(776),無預設值。
- [ @OptionName = ] 'option'
- 要設定的選項的名稱。option 的唯一值為 startup。
- [ @OptionValue = ] 'value'
- 指示是將選項設定為開啟(true 或 on)還是關閉(false 或 off)。value 的資料型別為 varchar(12),無預設值。
- 0(成功)或錯誤號(失敗)
- 啟動過程必須位於 master 資料庫中,並且不能包含 INPUT 或 OUTPUT 引數。啟動時恢復了 master 資料庫後,即開始執行儲存過程。
- 要求具有 sysadmin 固定伺服器角色的成員身份。
· 返回程式碼值
· 備註
· 許可權
GPS平臺、網站建設、軟體開發、系統運維,找森大網路科技!
https://cnsendnet.taobao.com
來自森大科技官方部落格
http://www.cnsendblog.com/index.php/?p=1875