1. 程式人生 > 其它 >建立自動執行儲存過程

建立自動執行儲存過程

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'
  • 指示是將選項設定為開啟(trueon)還是關閉(falseoff)。value 的資料型別為 varchar(12),無預設值。
  • 0(成功)或錯誤號(失敗)
  • 啟動過程必須位於 master 資料庫中,並且不能包含 INPUT 或 OUTPUT 引數。啟動時恢復了 master 資料庫後,即開始執行儲存過程。
  • 要求具有 sysadmin 固定伺服器角色的成員身份。

· 返回程式碼值

· 備註

· 許可權

GPS平臺、網站建設、軟體開發、系統運維,找森大網路科技!
https://cnsendnet.taobao.com
來自森大科技官方部落格
http://www.cnsendblog.com/index.php/?p=1875