האח הגדול עינו פקוחה - תיעוד כל השינויים בדטבייס
הגיע הזמן לגלות מי עשה מה ומתי,
ועם החומר המרשיע לזמן את החשודים לחדר החקירות!
ניצור טבלת מעקב:
Create Table DDLEventLog(Taarih DateTime Null,
UserName SysName Null,
ObjectName SysName Null,
CommandText VarChar(Max) Null,
EventType VarChar(Max) Null,
DatabaseName VarChar(Max) Null,
SchemaName VarChar(Max) Null,
SpID VarChar(Max) Null,
LoginName VarChar(Max) Null);
ניצור טריגר DDL שיתעד לטבלה כל פיפס:
Create Trigger TrgEventLog On Database For DDL_Database_Level_Events As
Insert Into DDLEventLog(Taarih,
UserName,
ObjectName,
CommandText,
EventType,
DatabaseName,
SchemaName,
SpID,
LoginName)
Select EventData().value('(/EVENT_INSTANCE/PostTime)[1]', 'DateTime') Taarih,
EventData().value('(/EVENT_INSTANCE/UserName)[1]','VarChar(Max)') UserName,
EventData().value('(/EVENT_INSTANCE/ObjectName)[1]','VarChar(Max)') ObjectName,
EventData().value('(/EVENT_INSTANCE/TSQLCommand/CommandText)[1]','VarChar(Max)') CommandText,
EventData().value('(/EVENT_INSTANCE/EventType)[1]','VarChar(Max)') EventType,
EventData().value('(/EVENT_INSTANCE/DatabaseName)[1]','VarChar(Max)') DatabaseName,
EventData().value('data(/EVENT_INSTANCE/SchemaName)[1]','VarChar(Max)') SchemaName,
EventData().value('(/EVENT_INSTANCE/SPID)[1]', 'VarChar(Max)') SpID,
EventData().value('(/EVENT_INSTANCE/LoginName)[1]','VarChar(Max)') LoginName;
וכעת לבדיקה ננסה ליצור טבלה, לבטל אותה, ולראות מה מופיע בטבלת המעקב:
Create Table MyTest(I Int);
Go
Drop Table MyTest;
Go
Select * From DDLEventLog;