Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a:SQL Server
Base de Dados SQL do Azure
Instância Gerida do Azure SQL
Azure Synapse Analytics
Sistema de Plataforma de Análise (PDW)
Ponto de Extremidade de Análise SQL no Microsoft Fabric
Armazém no Microsoft Fabric
Base de Dados SQL no Microsoft Fabric
Muitas das tabelas de sistema das versões anteriores do SQL Server são agora implementadas como um conjunto de vistas. Estas vistas são conhecidas como vistas de compatibilidade, e destinam-se apenas à compatibilidade retroativa. As vistas de compatibilidade expõem os mesmos metadados que estavam disponíveis no SQL Server 2000 (8.x). No entanto, as vistas de compatibilidade não expõem nenhum dos metadados relacionados com funcionalidades introduzidas no SQL Server 2005 (9.x) e posteriores. Por isso, quando utiliza novas funcionalidades, como Service Broker ou particionamento, deve mudar para usar as visualizações de catálogo.
Outra razão para atualizar para as visualizações de catálogo é que as colunas de visualização de compatibilidade que armazenam IDs de utilizador e IDs de tipo podem devolver NULL ou desencadear excessos aritméticos. Isto deve-se ao facto de poderes criar mais de 32.767 utilizadores, grupos e funções, e 32.767 tipos de dados. Por exemplo, se criar 32.768 utilizadores e depois executar a seguinte consulta: SELECT * FROM sys.sysusers. Se o ARITHABORT estiver definido como ON, a consulta falha devido a um erro de overflow aritmético. Se ARITHABORT estiver definido como OFF, a coluna uid devolve NULL.
Para evitar estes problemas, recomendamos que utilize as novas visualizações de catálogo que conseguem lidar com o aumento do número de IDs de utilizador e IDs de tipo. A tabela seguinte lista as colunas sujeitas a este excesso.
| Nome da coluna | Vista de compatibilidade | Visualização do SQL Server 2005 |
|---|---|---|
| xusertype | syscolumns | sys.columns |
| Tipo de utilizador | 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 | sysprocessos | sys.dm_exec_requests |
Quando referenciadas numa base de dados de utilizador, tabelas de sistema que foram anunciadas como obsoletas no SQL Server 2000 (como syslanguages ou syscacheobjects), estão agora vinculadas à vista de retrocompatibilidade no esquema sys . Como as tabelas de sistema do SQL Server 2000 foram obsoletas para várias versões, esta alteração não é considerada uma alteração grave.
Exemplo: Se um utilizador cria uma tabela de utilizador chamada syslanguages numa base de dados de utilizador, no SQL Server 2008, a instrução SELECT * from dbo.syslanguages; nessa base de dados devolveria os valores da tabela de utilizador. A partir do SQL Server 2012, esta prática irá devolver dados da visualização do sistema sys.syslanguages.
Ver também
Visualizações do catálogo (Transact-SQL)
Mapear tabelas do sistema para vistas do sistema (Transact-SQL)