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

  • sys.database_permissions

  • sys.server_permissions

grantor

sysprotects

  • sys.database_permissions

  • sys.server_permissions

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