SQL Server’da EVENTDATA Fonksiyonu
Herkese merhaba. Bu yazıda size SQL Server’da EVENTDATA fonksiyonunun kullanımından bahsedeceğim.
SQL Server’da EVENTDATA fonksiyonu ile tetikleyiciyi başlatan olayla ilgili veriler alabilirsiniz. Bu fonksiyon veritabanı olaylarıyla ilgili bilgiler döndürür ve XML veri tipinde depolanır. XML verileri isterseniz bir tabloda depolayabilirsiniz. Aşağıdaki örnekte konu ile ilgili yapılmış çalışmayı görmektesiniz.
--Database oluşturma
CREATE DATABASE Esya
GO
--Database kullanımı
USE Esya
GO
--Tablo oluşturma
CREATE TABLE Esyalar (
EsyaId INT
,EsyaAd NVARCHAR(100)
)
--Event Tablosu Oluşturma
CREATE TABLE EventLog (
GonderilmeZamani DATETIME
,LoginAdi NVARCHAR(100)
,EventTipi NVARCHAR(100)
,GonderilenKomut NVARCHAR(2000)
)
GO
--Trigger oluşturma (Tabloda bir değişiklik olduğu zaman)
CREATE TRIGGER EsyalarTablosuDegisim
ON DATABASE
FOR ALTER_TABLE
AS
DECLARE @Veri XML
SET @Veri = EVENTDATA()
INSERT EventLog (GonderilmeZamani, LoginAdi, EventTipi, GonderilenKomut)
VALUES (GETDATE(), CONVERT(NVARCHAR(100), current_user), @Veri.value('(/EVENT_INSTANCE/EventType)[1]', 'nvarchar(100)'), @Veri.value('(/EVENT_INSTANCE/TSQLCommand)[1]', 'nvarchar(2000)'));
GO
--Event tablosunu listeleme
SELECT
*
FROM EventLog
---Tabloya yeni bir alan ekleme
ALTER TABLE Esyalar
ADD EsyaTipi INT NOT NULL
--Tablonun kontrol edilmesi
SELECT
*
FROM dbo.Esyalar
--Event tablosunun kontrol edilmesi
SELECT
*
FROM EventLog
Görüldüğü üzere Alter Table ile yeni bir alan eklemesi yapılmış ve bu ekleme yapılınca trigger tetiklenmiş, EventLog tablosuna kayıtlar aktarılmıştır. Bu aktarımlarda temel seviye XQuery bilmekte yarar var.
Herkese çalışma hayatında ve yaşamında başarılar kolaylıklar.