Compartilhar via


Tabelas base do sistema

Aplica-se a:SQL ServerInstância Gerenciada de SQL do Azure

Tabelas base do sistema são tabelas subjacentes que, na prática, armazenam metadados em um banco de dados específico. O master banco de dados é especial nesse aspecto porque contém algumas tabelas adicionais que não são encontradas em nenhum dos outros bancos de dados. Essas tabelas contêm metadados persistentes com escopo em todo o servidor.

Importante

As tabelas base do sistema são usadas somente no Mecanismo de Banco de Dados do SQL Server e não são para uso geral do cliente. As tabelas base do sistema estão sujeitas a alterações e a compatibilidade não é garantida.

Metadados da tabela base do sistema

Um usuário autorizado que tem CONTROL, ALTERou VIEW DEFINITION permissão em um banco de dados pode ver metadados de tabela base do sistema na exibição do sys.objects catálogo. O favorecido também pode resolver os nomes e IDs de objeto das tabelas base do sistema usando funções internas, como OBJECT_NAME e OBJECT_ID.

Para associar a uma tabela base do sistema, um usuário deve se conectar à instância do SQL Server usando a DAC (conexão de administrador dedicada). Tentar executar uma SELECT consulta de uma tabela base do sistema sem se conectar usando DAC gera um erro.

Importante

O acesso às tabelas base do sistema usando o DAC foi projetado apenas para o pessoal da Microsoft e não é um cenário de cliente com suporte.

Tabelas base do sistema

A tabela a seguir lista e descreve cada tabela base do sistema no SQL Server.

Tabela base Descrição
sys.sysschobjs Existe em todos os bancos de dados. Cada linha representa um objeto no banco de dados.
sys.sysbinobjs Existe em todos os bancos de dados. Contém uma linha para cada entidade do Service Broker no banco de dados. As entidades do Service Broker incluem os seguintes objetos:

Tipo de mensagem
Contrato de serviço
Serviço
Os nomes e tipos usam ordenação primária que é fixa.
sys.sysclsobjs Existe em todos os bancos de dados. Contém uma linha para cada entidade classificada que compartilha as mesmas propriedades comuns que incluem os seguintes objetos:

Assembléia
Dispositivo de backup
Catálogo de texto completo
Função de partição
Esquema de partição
Grupo de arquivos
Chave de ofuscação
Esquema
sys.sysnsobjs Existe em todos os bancos de dados. Contém uma linha para cada entidade no escopo de namespace. Esta tabela é usada para armazenar entidades de coleção XML.
sys.syscolpars Existe em todos os bancos de dados. Contém uma linha para cada coluna de uma tabela, exibição ou função com valor de tabela. Também contém linhas para cada parâmetro de um procedimento ou função.
sys.systypedsubobjs Existe em todos os bancos de dados. Contém uma linha para cada subentidade digitada. Apenas parâmetros de função de partição entram nessa categoria.
sys.sysidxstats Existe em todos os bancos de dados. Contém uma linha para cada índice ou estatísticas de tabelas e exibições indexadas

Nota: Cada índice (exceto heap) está associado a uma estatística que tem o mesmo nome que o índice.
sys.sysiscols Existe em todos os bancos de dados. Contém uma linha para cada índice persistente e coluna de estatísticas.
sys.sysscalartypes Existe em todos os bancos de dados. Contém uma linha para cada tipo definido pelo usuário ou sistema.
sys.sysdbreg Existe apenas no master banco de dados. Contém uma linha para cada banco de dados registrado.
sys.sysxsrvs Existe apenas no master banco de dados. Contém uma linha para cada servidor local, vinculado ou remoto.
sys.sysrmtlgns Essa tabela base do sistema existe somente no master banco de dados. Contém uma linha para cada mapeamento de logon remoto. Isso é usado para mapear logons que dizem estar vindo de um servidor correspondente para um logon local real.
sys.syslnklgns Existe apenas no master banco de dados. Contém uma linha para cada mapeamento de logon vinculado. Mapeamentos de logon vinculados são usados por chamadas remotas de procedimento e consultas distribuídas que vão de um servidor local para um servidor vinculado correspondente.
sys.sysxlgns Existe apenas no master banco de dados. Contém uma linha para cada principal de servidor.
sys.sysdbfiles Existe em todos os bancos de dados. Se a coluna dbid for zero, a linha representará um arquivo que pertence a esse banco de dados. master No banco de dados, a coluna dbid pode ser diferente de zero. Quando esse for o caso, a linha representa um arquivo mestre.
sys.sysusermsg Existe apenas no master banco de dados. Cada linha representa uma mensagem de erro definida pelo usuário.
sys.sysprivs Existe em todos os bancos de dados. Contém uma linha para cada banco de dados - ou permissão em nível do servidor.

Observação: as permissões no nível do servidor são armazenadas no master banco de dados.
sys.sysowners Existe em todos os bancos de dados. Cada linha representa um principal de banco de dados.
sys.sysobjkeycrypts Existe em todos os bancos de dados. Contém uma linha para cada chave simétrica, criptografia ou propriedade criptográfica associada a um objeto.
sys.syscerts Existe em todos os bancos de dados. Contém uma linha para cada certificado em um banco de dados.
sys.sysasymkeys Existe em todos os bancos de dados. Cada linha representa uma chave assimétrica.
sys.ftinds Existe em todos os bancos de dados. Contém uma linha para cada índice de texto completo no banco de dados.
sys.sysxprops Existe em todos os bancos de dados. Contém uma linha para cada propriedade estendida.
sys.sysallocunits Existe em todos os bancos de dados. Contém uma linha para cada unidade de alocação de armazenamento.
sys.sysrowsets Existe em todos os bancos de dados. Contém uma linha para cada conjunto de linhas de partição para um índice ou um heap.
sys.sysrowsetrefs Existe em todos os bancos de dados. Contém uma linha para cada índice para referência de conjunto de linhas.
sys.syslogshippers Existe apenas no master banco de dados. Contém uma linha para cada banco de dados de testemunha espelhada.
sys.sysremsvcbinds Existe em todos os bancos de dados. Contém uma linha para cada associação de serviço remoto.
sys.sysconvgroup Existe em todos os bancos de dados. Contém uma linha para cada instância de serviço no Service Broker.
sys.sysxmitqueue Existe em todos os bancos de dados. Contém uma linha para cada fila de transmissão do Service Broker.
sys.sysdesend Existe em todos os bancos de dados. Contém uma linha para cada ponto de extremidade de envio de uma conversa do Service Broker.
sys.sysdercv Existe em todos os bancos de dados. Contém uma linha para cada ponto de extremidade de recebimento de uma conversa do Service Broker.
sys.sysendpts Existe apenas no master banco de dados. Contém uma linha para cada ponto de extremidade criado no servidor.
sys.syswebmethods Existe apenas no master banco de dados. Contém uma linha para cada método SOAP definido em um ponto de extremidade HTTP habilitado por SOAP criado no servidor.
sys.sysqnames Existe em todos os bancos de dados. Contém uma linha para cada namespace ou nome qualificado para um token de ID de 4 bytes.
sys.sysxmlcomponent Existe em todos os bancos de dados. Cada linha representa um componente de esquema XML.
sys.sysxmlfacet Existe em todos os bancos de dados. Contém uma linha para cada faceta XML (restrição) de definição de tipo XML.
sys.sysxmlplacement Existe em todos os bancos de dados. Contém uma linha para cada colocação XML de componentes XML.
sys.syssingleobjrefs Existe em todos os bancos de dados. Contém uma linha para cada referência geral N-a-1.
sys.sysmultiobjrefs Existe em todos os bancos de dados. Contém uma linha para cada referência geral N-a-N.
sys.sysobjvalues Existe em todos os bancos de dados. Contém uma linha para cada propriedade de valor geral de uma entidade.
sys.sysguidrefs Existe em todos os bancos de dados. Contém uma linha para cada referência de ID classificada por GUID.

Atualizar tabelas base do sistema

Veja os dados nas tabelas do sistema por meio das exibições do catálogo do sistema. Para atualizar os metadados em uma tabela base do sistema, use a interface Transact-SQL apropriada (por exemplo, instruções DDL). Não é possível atualizar manualmente as tabelas do sistema. O SQL Server relata as mensagens a seguir quando você executa atualizações diretas nas tabelas do sistema.

Uma tabela do sistema é atualizada manualmente

Msg 17659: Warning: System table ID <id> has been updated directly in database ID <id> and cache coherence may not have been maintained. SQL Server should be restarted.

Iniciar um banco de dados com uma tabela do sistema que foi atualizada manualmente

Msg 3859: Warning: The system catalog was updated directly in database ID 17, most recently at date_time.

Execute o comando DBCC_CHECKDB depois que uma tabela do sistema for atualizada manualmente

Msg 3859: Warning: The system catalog was updated directly in database ID 17, most recently at date_time.

Se você executar atualizações manuais em uma tabela do sistema e encontrar um problema, poderá ser solicitado que você restaure a partir de um backup ou copie os dados do banco de dados afetado para um novo banco de dados. Para obter mais informações, consulte as ações do usuário para MSSQLSERVER_8992.