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)
Comentários
https://aka.ms/ContentUserFeedback.
Em breve: Ao longo de 2024, eliminaremos os problemas do GitHub como o mecanismo de comentários para conteúdo e o substituiremos por um novo sistema de comentários. Para obter mais informações, consulteEnviar e exibir comentários de