Exibições de compatibilidade do sistema (Transact-SQL)

Aplica-se a:SQL ServerBanco de Dados SQL do AzureInstância Gerenciada de SQL do AzureAzure Synapse AnalyticsPDW (Analytics Platform System)Ponto de extremidade de SQL no Microsoft FabricWarehouse no Microsoft Fabric

Muitas das tabelas do sistema de versões anteriores do SQL Server agora são implementadas como um conjunto de modos de exibição. Essas exibições são conhecidas como exibições de compatibilidade e destinam-se à compatibilidade com versões anteriores apenas. Os modos de exibição de compatibilidade expõem os mesmos metadados que estavam disponíveis no SQL Server 2000 (8.x). No entanto, os modos de exibição de compatibilidade não expõem nenhum dos metadados relacionados a recursos que são introduzidos no SQL Server 2005 (9.x) e posterior. Portanto, ao usar novos recursos, como o Service Broker ou o particionamento, você deve alternar para o uso das exibições de catálogo.

Outro motivo para atualizar às exibições do catálogo é que as colunas de exibição de compatibilidade que armazenam identificações de usuário e de tipo podem retornar NULL ou estouros aritméticos de gatilho. Isto é porque você pode criar mais de 32.767 usuários, grupos e funções, e 32.767 tipos de dados. Por exemplo, se você criar 32.768 usuários e, então, executar a seguinte consulta: SELECT * FROM sys.sysusers. Se ARITHABORT for definido como ON, a consulta falhará com um erro de estouro aritmético. Se ARITHABORT estiver definido como OFF, a coluna uid retornará NULL.

Para evitar esses problemas, recomendamos que você use as novas exibições do catálogo que podem controlar o número maior de identificações de usuários e de tipo. A tabela a seguir lista as colunas sujeitas a esse estouro.

Nome da coluna Exibição de compatibilidade Exibição SQL Server 2005
xusertype syscolumns sys.columns
usertype syscolumns sys.columns
membrouid membros do sistema sys.database_role_members
groupuid membros do sistema 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

Quando referenciadas em um banco de dados do usuário, as tabelas do sistema que foram anunciadas como preteridas no SQL Server 2000 (como syslanguages ou syscacheobjects), agora são vinculadas ao modo de exibição de compatibilidade de retorno no esquema sys . Desde que as tabelas de sistema do SQL Server 2000 foram substituídas por várias versões, essa alteração não é considerada uma alteração de quebra.

Exemplo: Se um usuário criar uma tabela de usuário chamada syslanguages em um banco de dados de usuário, no SQL Server 2008, a instrução SELECT * from dbo.syslanguages; nesse banco de dados retornará os valores da tabela de usuário. A partir do SQL Server 2012, essa prática retornará dados da exibição do sistema sys.syslanguages.

Confira também

Exibições do Catálogo (Transact-SQL)
Mapeando tabelas do sistema para exibições do sistema (Transact-SQL)