In informatica, il termine deprecato (deprecated) è usato per indicare che una funzionalità o una caratteristica presente nella versione del software in uso sarà eliminata (non supportata) nelle versioni successive; se ne sconsiglia quindi l’utilizzo in nuovi progetti e si raccomanda di adeguare il software esistente che faccia uso di chiamate a funzionalità deprecate.
Anche sulla piattaforma SQL Server, ad ogni rilascio di versione, alcune funzionalità vengono dichiarate deprecate, Microsoft ne sconsiglia quindi l’utilizzo per i nuovi sviluppi.
L’elenco delle funzionalità e delle caratteristiche deprecate in SQL Server 2008 R2 è disponibile a questo link:
http://technet.microsoft.com/it-it/library/ms143729.aspx
Com’è possibile individuare le funzionalità deprecate e che al tempo stesso vengono utilizzate dalle applicazioni database che accedono ad una determinata istanza SQL Server ?
Possiamo rispondere a questa domanda utilizzando la DMV sys.dm_os_performance_counters che, come citato nei BOL, restituisce una riga per ogni contatore delle prestazioni gestito dall’istanza SQL Server. Filtrando le righe restituite dalla DMV sys.dm_os_performance_counters per la colonna object_name e chiedendo che nel nome del contatore sia contenuta la stringa ":Deprecated Features", otteniamo l’elenco delle funzionalità deprecate nella versione di SQL Server in uso.
Sappiamo che la chiamata alla funzione RAISERROR, riportata nel seguente frammento di codice T-SQL è deprecata:
go
Eseguiamo ora il codice T-SQL riportato di seguito:
select
[object_name]
,[instance_name]
,[cntr_value]
from
sys.dm_os_performance_counters
where
([object_name] like N’%:Deprecated Features%’)
and instance_name = N’OldStyle RaisError’;
go
RAISERROR 54321 N’This is an old-style of RAISERROR.’;
go
select
[object_name]
,[instance_name]
,[cntr_value]
from
sys.dm_os_performance_counters
where
([object_name] like N’%:Deprecated Features%’)
and instance_name = N’OldStyle RaisError’;
L’output è illustrato nelle figure 1 e 2:
Figura 1 – Scheda risultati, contatore SQLServer:Deprecated Features Oldstyle RAISERROR
Figura 2 – Scheda messaggi con visualizzazione dell’errore ID=54321
La DMV sys.dm_os_performance_counters è stata interrogata prima e dopo la chiamata deprecata alla funzione RAISERROR, nella prima query il valore del contatore SQLServer:Deprecated Features Oldstyle RAISERROR è ZERO mentre dopo l’utilizzo (deprecato) di RAISERROR, il valore del contatore è uguale a UNO.
La query riportata nel seguente frammento di codice T-SQL esegue, sull’istanza SQL Server 2008 correntemente connessa, l’estrazione delle funzionalità deprecate con almeno un utilizzo (da riavvio del servizio SQL Server).
[object_name] ,[instance_name] ,[cntr_value] from
sys.dm_os_performance_counters
where
([object_name] like N’%:Deprecated Features%’)
and ([cntr_value] > 0);
L’output è illustrato in Figura 3:
Figura 3 – Funzionalità deprecate, ma utilizzate da un’istanza SQL Server