Partilhar via


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

Aplica-se a: SQL Server Banco de Dados SQL do Azure Instância Gerenciada de SQL do Azure Azure Synapse Analytics PDW (Analytics Platform System) Ponto de extremidade de análise de SQL no Microsoft Fabric Warehouse no Microsoft Fabric

Muitas das tabelas do sistema de versões anteriores do SQL Server agora são implementadas como um conjunto de exibições. Essas exibições são conhecidas como exibições de compatibilidade e destinam-se à compatibilidade com versões anteriores apenas. As exibições de compatibilidade expõem os mesmos metadados que estavam disponíveis no SQL Server 2000 (8.x). No entanto, as exibições de compatibilidade não expõem nenhum dos metadados relacionados aos recursos 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 do 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 for 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
memberuid 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 de usuário, as tabelas do sistema que foram anunciadas como preteridas no SQL Server 2000 (como syslanguages ou syscacheobjects) agora estão vinculadas ao modo de exibição de compatibilidade com versões anteriores 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)