exibições de compatibilidade (Transact-SQL)
Muitas das tabelas do sistema de versões anteriores de SQL Server são implementadas agora 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 em SQL Server 2000. Entretanto, as exibições de compatibilidade não expõem quaisquer metadados relacionados a recursos introduzidos em SQL Server 2005 e posteriores. Sendo assim, quando você usa recursos novos, como Service Broker ou particionamento, você deve alternar para as 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, em seguida, 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 |
sysmembers |
sys.database_role_members |
groupid |
sysmembers |
sys.database_role_members |
uid |
sysobjects |
sys.objects |
uid |
sysprotects |
|
grantor |
sysprotects |
|
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 de sistema que foram anunciadas como substituídas no SQL Server 2000 (como syslanguages ou syscacheobjects) agora estão vinculadas à exibição de compatibilidade reversa do 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 significativa.
Exemplo: Se um usuário criar uma tabela de usuário chamada syslanguages em um banco de dados do usuário, no SQL Server 2008, a instrução SELECT * from dbo.syslanguages; no banco de dados retornaria os valores da tabela do usuário. A partir do SQL Server 2012, essa prática retorna os dados de sys.syslanguages da exibição do sistema.
Consulte também
Referência
Exibições de catálogo (Transact-SQL)
Mapeando tabelas do sistema para exibições do sistema (Transact-SQL)