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