Home > Scripts > Script che restituisce la cronologia delle modifiche agli oggetti di un database

Script che restituisce la cronologia delle modifiche agli oggetti di un database

Capita, di frequente, di avere la necessità di stabilire quale sia stata la cronologia delle modifiche effettuate agli oggetti di un database, ad esempio alle Stored Procedure.
Lo script restituisce la cronologia di modifica a tutti gli oggetti o, a particolari tipologie di oggetti. Se si vuole ottenere la cronologia di modifica delle SP basta inserire nella sezione di assegnazione delle variabili l’istruzione SET @obj_type=’P’.
Se il database in esame prevede l’uso degli oggetti di supporto per il diagramming l’elenco delle SP include anche SP come sp_creatediagram etc., che appartengono, di default, allo schema dbo.
Viene adottato un criterio di ordinamento per data modifica e tipo oggetto, ma il criterio è personalizzabile cambiando il valore di @sqlord.

DECLARE @name_db VARCHAR(256)
DECLARE @obj_type CHAR(2)
DECLARE @sqlstring NVARCHAR(2056)
DECLARE @sqlselect NVARCHAR(1024)
DECLARE @sqlcond NVARCHAR(256)
DECLARE @sqlord NVARCHAR(256)

SET @name_db=’UGISS_Thematic’

SET @sqlselect= ‘USE ‘ + @name_db + ‘;
SELECT sys.all_objects.name AS [Nome Oggetto],[Tipo Oggetto]=
 CASE [TYPE]  WHEN ”AF” THEN ”AGGREGATE_FUNCTION”
 WHEN ”C” THEN ”CHECK CONSTRAINT”
 WHEN ”D” THEN ”DEFAULT”
 WHEN ”F” THEN ”FOREIGN KEY CONSTRAINT”
 WHEN ”FN” THEN ”SCALAR_FUNCTION”
 WHEN ”FS” THEN ”CLR_SCALAR_FUNCTION”
 WHEN ”FT” THEN ”CLR_TABLE_VALUED_FUNCTION”
 WHEN ”IF” THEN ”INLINE_TABLE_VALUED_FUNCTION”
 WHEN ”IT” THEN ”INTERNAL_TABLE”
 WHEN ”P” THEN ”STORED PROCEDURE”
 WHEN ”PK” THEN ”PRIMARY KEY”
 WHEN ”S” THEN ”TABELLA DI SISTEMA”
 WHEN ”SQ” THEN ”SERVICE_QUEUE”
 WHEN ”TR” THEN ”TRIGGER”
 WHEN ”TF” THEN ”TABLE_VALUED_FUNCTION”
 WHEN ”U” THEN ”TABELLA”
 WHEN ”UQ” THEN ”UNIQUE CONSTRAINT”
 WHEN ”V” THEN ”VISTA”
 WHEN ”X” THEN ”EXTENDED STORED PROCEDURE”
 END, 
 CONVERT(varchar(16),modify_date,103)AS [Data Modifica],
 CONVERT(varchar(16),modify_date,108)AS [Ora Modifica] FROM
 sys.schemas
INNER JOIN
 sys.all_objects ON sys.schemas.schema_id = sys.all_objects.schema_id’

SET @sqlcond=’ WHERE sys.schemas.name <> ‘+ ”’sys”’ + ‘ AND sys.schemas.name <> ‘+ ”’INFORMATION_SCHEMA”’

IF @obj_type IS NOT NULL SET @sqlcond=@sqlcond + ‘ AND type=’ +”” +@obj_type + ””

SET @sqlord=’ ORDER BY modify_date desc,[Tipo Oggetto]’

SET @sqlstring = @sqlselect + @sqlcond + @sqlord

EXECUTE sp_executesql @sqlstring

 
 

 

Chi è Davide Mauri

Microsoft Data Platform MVP dal 2007, Davide Mauri si occupa di Data Architecture e Big Data nel mondo dell'IoT. Attualmente ricopre il ruolo di "Director Software Development & Cloud Infrastructure" in Sensoria, societa specializzata nella creazione di Wearables e sensori per l'IoT applicati a tessuti ed oggetti sportivi.

Leggi Anche

Rigenerare colonne IDENTITY in SQL Server e Azure SQL!

Recentemente mi sono imbattuto nell’errore SQL 8115: Arithmetic overflow error converting IDENTITY to data type …

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

sixty three + = sixty nine

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.