Spesso può essere necessario avere un log delle modifiche dei strutturali al database in uso.
con la procedura di seguito è possibile creare un trigger che scrive in una tabella di log che si chiama LogMobDB
Creazione tabella di Log dei Dati
CREATE TABLE [LogModDB]( [data] [datetime] NULL, [utente] [varchar](128) NULL, [comando] [varchar](max) NULL, [objname] [varchar](128) NULL, [dbname] [varchar](128) NULL );
Creazione del trigger che va a scrivere nella tabella LogModDB
SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TRIGGER [Log_Modifiche_Struttura] ON DATABASE FOR CREATE_TABLE, ALTER_TABLE, DROP_TABLE, CREATE_VIEW, ALTER_VIEW, DROP_VIEW, CREATE_PROCEDURE, ALTER_PROCEDURE, DROP_PROCEDURE, CREATE_FUNCTION, ALTER_FUNCTION, DROP_FUNCTION, CREATE_INDEX, ALTER_INDEX, DROP_INDEX, CREATE_ASSEMBLY, ALTER_ASSEMBLY, DROP_ASSEMBLY, CREATE_TRIGGER, ALTER_TRIGGER, DROP_TRIGGER, CREATE_SCHEMA, ALTER_SCHEMA, DROP_SCHEMA AS DECLARE @command AS VARCHAR(MAX) DECLARE @login AS VARCHAR(128) DECLARE @db AS VARCHAR(128) DECLARE @objName AS VARCHAR(128) SELECT @login = SUSER_SNAME() SELECT @command = EVENTDATA().value('(/EVENT_INSTANCE/TSQLCommand/CommandText)[1]','nvarchar(max)') SELECT @objName = EVENTDATA().value('(/EVENT_INSTANCE/ObjectName)[1]','nvarchar(max)') SELECT @db = DB_NAME() --Inserisco la modifica nello storico INSERT INTO LogModDB values ( getdate(), @login, @command, @objName, @db ) GO SET ANSI_NULLS OFF GO SET QUOTED_IDENTIFIER OFF GO ENABLE TRIGGER [Log_Modifiche_Struttura] ON DATABASE GO

About Diego Mancinelli
Da sempre appassionato di informatica e tutto ciò che riaguarda l' Information Tecnology. Mi occupo di progettazione, analisi e sviluppo di software e applicazioni web per piattaforme Windows, Android, iOS