Inserire un trigger per avere un log delle modifiche strutturali ad un database Sql Server

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

Confrontare due database Sql Server

Ho avuto necessita di confrontare due database Sql Server 2008 uno di produzione e uno di test e verificare che fossero perfettamente uguali.
Oltre a tanti software proprietari ho trovato su CodePlex trovato questo comodissimo tool open source.

Segnala tutte le differenze fra il primo e il secondo e ne propone il riallineamento.

Leggi tutto

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