Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
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)