SQL Server Startup Procedures

  • SQL Server sunucum başladığında başlangıç zamanını bir tabloya kaydetse ve bana mail gönderse ne iyi olurdu?

Gibi taleplere cevap SQL Server’da yer alan startup stored procedürlerde saklıdır. Bu procedürler SQL Server başladığında otomatik çalıştırılan prosedürlerdir.

Her hangi bir prosedürü startup prosedür olarak ayarlamak için sp_procoption sistem prosedürü kullanılır.

exec sp_procoption @ProcName = ['stored procedure name'], 
@OptionName = 'STARTUP', 
@OptionValue = [on|off]

sp_procoption parametreleri:

  • @ProcName : Otomatik çalışmaya ayarlanacak prosedürün adı
  • @OptionName: Sadece ‘STARTUP’ değerini destekler
  • @OptionValue: Otomatik çalışmayı açmak için ‘ON’, kaoatmak için ‘OFF’ değerleri kullanılır.

sp_procoption prosedürü aşağıdaki kısıtlamalara sahiptir;

  • sysadmin rolünde bir kullanıcı ile oturum açılması gerekmektedir.
  • Sadece standart prosedürler üzerinde çalışmaktadır.
  • Otomatik çalıştırılacak prosedür master veri tabanında olmak zorundadır.
  • Otomatik çalıştırılacak prosedür giriş veya dönüş parametresi bulunduramaz.

Sunucu başlama zamanlarını tutacak veri tabanı, tablolarının oluşturulması:

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 

Otomatik çalışacak prosedürün tanımlanması:

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

Prosedürün otomatik çalışmaya ayarlanması

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

Prosedürün otomatik çalışmasını engelleme:

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

Yorum yapın

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Translate »
%d blogcu bunu beğendi: