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