欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

在SQL Server啟動時自動執(zhí)行存儲過程。第2/2頁

 更新時間:2008年10月02日 01:02:05   作者:  
當(dāng)sql server啟動時,我很想運行一個存儲過程。有沒有一種方法可以在每次SQL Server服務(wù)啟動時都會自動執(zhí)行這個存儲過程呢?

復(fù)制代碼 代碼如下:

USE MASTER
  GO
  CREATE DATABASE SERVER_METRICS
  GO
  USE SERVER_METRICS
  GO
  CREATE table DBO.SERVER_STARTUP_LOG
  (
  LOGID INT IDENTITY(1,1) NOT NULL PRIMARY KEY,
  START_TIME DATETIME NOT NULL
  CONSTRAINT DF_START_TIME DEFAULT GETDATE()
  )
  GO
  USE MASTER
  GO
  CREATE PROCEDURE DBO.LOG_SERVER_START
  AS
  SET NOCOUNT ON
  PRINT '*** LOGGING SERVER STARTUP TIME ***'
  INSERT INTO SERVER_METRICS.DBO.SERVER_STARTUP_LOG DEFAULT VALUES
  GO

既然必要的對象已經(jīng)創(chuàng)建,那么我們需要在服務(wù)器啟動時把創(chuàng)建的存儲過程設(shè)置為自動啟動。執(zhí)行下面的查詢,我們可以看到sp_configure高級選項'scan for startup procs'需要被設(shè)置。這些操作不需要手動去做,運行sp_procoption會自動為你設(shè)置。
復(fù)制代碼 代碼如下:

USE MASTER
  GO
  SELECT VALUE, VALUE_IN_USE, DESCRIPTION
  FROM SYS.CONFIGURATIONS
  WHERE NAME = 'scan for startup procs'
  GO

sql server存儲過程


現(xiàn)在,我們可以用sp_procoption標(biāo)志自動存儲的過程。


  USE MASTER
  GO
  EXEC SP_PROCOPTION LOG_SERVER_START, 'STARTUP', 'ON'
  GO

  重新運行我們的配置檢查,現(xiàn)在我們可以看到,服務(wù)器配置成查看啟動過程(VALUE = 1),但是運行值目前實際上仍然設(shè)置成沒有查看啟動過程(VALUE_IN_USE = 0)。我們需要重新啟動SQL server服務(wù)來使改動生效。


  USE MASTER
  GO
  SELECT VALUE, VALUE_IN_USE, DESCRIPTION
  FROM SYS.CONFIGURATIONS
  WHERE NAME = 'scan for startup procs'
  GO

sql server存儲過程

  如果我們重啟SQL Server服務(wù),我們會看到配置值現(xiàn)在生效了?!?/P>

sql server存儲過程

  此外,查看之前創(chuàng)建的SERVER_STARTUP_LOG表,我們看到服務(wù)器啟動時間已經(jīng)被記錄到表中。


  USE SERVER_METRICS
  GO
  SELECT * FROM SERVER_STARTUP_LOG
  GO
 

sql server存儲過程

  最后,查看SQL server錯誤日志也可以證明這個存儲過程是自動運行的。


  USE MASTER
  GO
  EXEC XP_READERRORLOG
  GO
 

sql server存儲過程

  現(xiàn)在,讓我們把自動執(zhí)行服務(wù)關(guān)掉,下次SQL Server啟動時,這個存儲過程將不會運行。


  USE MASTER
  GO
  EXEC SP_PROCOPTION LOG_SERVER_START, 'STARTUP', 'OFF'
  GO

  如果你不確定你創(chuàng)建的哪個存儲過程已經(jīng)被標(biāo)成自動執(zhí)行,你可以運行以下的查詢:


  SELECT ROUTINE_NAME
  FROM MASTER.INFORMATION_SCHEMA.ROUTINES
  WHERE OBJECTPROPERTY(OBJECT_ID(ROUTINE_NAME),'ExecIsStartup') = 1

  有件事你必須意識到:刪除和重新創(chuàng)建標(biāo)記的存儲過程將會要求重新運行sp_procoption。刪除一個存儲過程會導(dǎo)致存儲過程變成“沒有標(biāo)記”的自動執(zhí)行。如果你刪除存儲過程但是不打算重新創(chuàng)建它,那么系統(tǒng)配置設(shè)置'scan for startup procs'將會被遺棄成“on”,直到你通過sp_configure手動把它設(shè)置為“off”或者使用sp_procoption把存儲過程的自動執(zhí)行關(guān)掉。把存儲過程自動執(zhí)行關(guān)掉或啟動的過程會保持系統(tǒng)配置設(shè)置自動執(zhí)行。

相關(guān)文章

最新評論