Tabulas un trigera izveide:
Create Table dbo.LogTableTrigeris tiek definēts datu bāzes ietvaros, līdz ar to attiecīgajā tabulā tik glabāti tikai konkrētās datu bāzes DDL notikumi- piemēram, tabulas izveide, skata izmaiņas, trigera izveide, datu bāzes lietotāja dzēšana utt utt utt.
(
Datums datetime,
Lietotajs nvarchar(100),
Notikums XML
);
Go
Create Trigger tr_DDLNotikums
On DataBase
For DDL_DATABASE_LEVEL_EVENTS
AS
Insert Into dbo.LogTable (Datums, Lietotajs, Notikums)
Values (GETDATE(), Suser_Sname(), EventData());
Pārbaudei var veikt kādu DDL darbību, piemēram izveidot un izdzēst tabulu (var, protams, pamēģināt arī citas darbības):
Create Table dbo.TestTable (TestTableID int)Tagad iepriekš izveidotajā tabulā būs reģistrēti notikumi. Tos var apskatīt:
Drop Table dbo.TestTable
Select * From dbo.LogTable;Bet ņemot vērā, ka izveidots trigeris tika uz XML kolonnas, var izveidot arī vaicājumu, kurš apskata konkrētas XML daļas (veiktā darbība un objekts):
Select Datums, Lietotajs, Notikums.value('(/EVENT_INSTANCE/EventType)[1]', 'nvarchar(100)') Darbiba,Trigera un Log tabulas dzēšana (lai atstātu visu kā bija):
Notikums.value('(/EVENT_INSTANCE/ObjectName)[1]', 'nvarchar(100)') Nosaukums, Notikums
From dbo.LogTable
Order By Datums
Drop Trigger tr_DDLNotikums
On DataBase
Drop Table dbo.LogTable;
Nav komentāru:
Ierakstīt komentāru