- 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