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