Viste di compatibilità (Transact-SQL)
Molte delle tabelle di sistema incluse nelle versioni precedenti di SQL Server sono implementate come set di viste. Queste viste sono note come viste di compatibilità e sono disponibili solo per compatibilità con le versioni precedenti. Le viste di compatibilità espongono gli stessi metadati disponibili in SQL Server 2000, ma non espongono i metadati correlati a funzionalità introdotte in SQL Server 2005 e versioni successive. Quando si utilizzano nuove funzionalità, ad esempio Service Broker o il partizionamento, è pertanto necessario passare all'utilizzo delle viste del catalogo.
Un altro motivo per eseguire l'aggiornamento alle viste del catalogo è rappresentato dal fatto che le colonne delle viste di compatibilità in cui sono archiviati ID utente e ID di tipo possono restituire NULL o attivare overflow aritmetici, dal momento che è possibile creare oltre 32.767 utenti, gruppi e ruoli e 32.767 tipi di dati. Se ad esempio è necessario creare 32.768 utenti e quindi eseguire la query SELECT * FROM sys.sysusers, in caso di impostazione di ARITHABORT su ON la query ha esito negativo e viene generato un errore di overflow aritmetico. Se ARITHABORT è impostato su OFF, la colonna UID restituisce NULL.
Per evitare questi problemi, è consigliabile utilizzare le nuove viste del catalogo in grado di gestire un numero più elevato di ID utente e ID di tipo. Nella tabella seguente sono elencate le colonne soggette a questo tipo di overflow.
Nome colonna |
Vista di compatibilità |
Vista di SQL Server 2005 |
---|---|---|
xusertype |
syscolumns |
sys.columns |
usertype |
syscolumns |
sys.columns |
memberuid |
sysmembers |
sys.database_role_members |
groupuid |
sysmembers |
sys.database_role_members |
uid |
sysobjects |
sys.objects |
uid |
sysprotects |
|
grantor |
sysprotects |
|
xusertype |
systypes |
sys.types |
uid |
systypes |
sys.types |
uid |
sysusers |
sys.database_principals |
altuid |
sysusers |
sys.database_principals |
gid |
sysusers |
sys.database_principals |
uid |
syscacheobjects |
sys.dm_exec_plan_attributes |
uid |
sysprocesses |
sys.dm_exec_requests |