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)