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

Aplica-se a: SQL Server (todas as versões com suporte)

Muitas das tabelas do sistema de versões anteriores de 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 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 posteriores. Portanto, ao usar novos recursos, como Service Broker ou particionamento, você deve mudar para usar as 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
memberuid sysmembers sys.database_role_members
groupuid sysmembers sys.database_role_members
Uid sysobjects sys.objects
Uid sysprotects sys.database_permissions

sys.server_permissions
Concedente 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 referenciados 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 associadas à exibição de compatibilidade traseira 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 de SQL Server 2012, essa prática retornará dados do modo de exibição do sistema sys.syslanguages.

Consulte Também

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