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
Azure SQL Managed Instance
Retorna uma linha para cada banco de dados que está participando de um grupo de disponibilidade Always On para o qual a instância local do SQL Server está hospedando uma réplica de disponibilidade. Essa exibição de gerenciamento dinâmico expõe informações de estado nas réplicas primária e secundária. Em uma réplica secundária, essa exibição retorna uma linha para cada banco de dados secundário na instância do servidor. Na réplica primária, essa exibição retorna uma linha para cada banco de dados primário e uma linha extra para o banco de dados secundário correspondente.
Importante
Dependendo da ação e dos estados de nível superior, as informações de estado do banco de dados podem estar indisponíveis ou desatualizadas. Além disso, os valores têm apenas relevância local. Por exemplo, na réplica primária, o valor da coluna last_hardened_lsn
reflete as informações sobre um determinado banco de dados secundário que está atualmente disponível para a réplica primária, não o número de sequência de log protegido (LSN) real que a réplica secundária pode ter atualmente.
Nome da coluna | Tipo de dados | Descrição (na réplica primária) |
---|---|---|
database_id |
int | Identificador do banco de dados, exclusivo dentro de uma instância do SQL Server. Esse é o mesmo valor exibido no sys.databases exibição de catálogo. |
group_id |
identificador único | Identificador do grupo de disponibilidade ao qual o banco de dados pertence. |
replica_id |
identificador único | Identificador da réplica de disponibilidade dentro do grupo de disponibilidade. |
group_database_id |
identificador único | Identificador do banco de dados dentro do grupo de disponibilidade. Esse identificador é idêntico em todas as réplicas às quais esse banco de dados é associado. |
is_local |
pouco | Se o banco de dados de disponibilidade é local, uma das seguintes opções:0 = O banco de dados não é local para a instância do SQL Server.1 = O banco de dados é local para a instância do servidor. |
is_primary_replica |
pouco | Retorna 1 se a réplica for primária ou 0 se for uma réplica secundária.Aplica-se a: SQL Server 2014 (12.x) e versões posteriores. |
synchronization_state |
minúsculo | Estado de movimento de dados, um dos seguintes valores.0 = Não sincronizar. Para um banco de dados primário, indica que o banco de dados não está pronto para sincronizar seu log de transações com os bancos de dados secundários correspondentes. Para um banco de dados secundário, esse valor indica que o banco de dados não iniciou a sincronização de log devido a um problema de conexão, está sendo suspenso ou está passando por estados de transição durante a inicialização ou uma troca de função.1 = Sincronização. Para um banco de dados primário, indica que o banco de dados está pronto para aceitar uma solicitação de verificação de um banco de dados secundário. Para um banco de dados secundário, indica que a movimentação de dados ativos está ocorrendo para o banco de dados.2 = Sincronizado. Um banco de dados primário mostra SYNCHRONIZED no lugar de SYNCHRONIZING . Um banco de dados secundário de confirmação síncrona mostra sincronizado quando o cache local diz que o banco de dados está pronto para failover e está sincronizando.3 = Reverter. Indica a fase no processo de desfazer quando um banco de dados secundário está ativamente obtendo páginas do banco de dados primário.Cuidado: Quando um banco de dados em uma réplica secundária está no estado REVERTING , forçar o failover para a réplica secundária deixa o banco de dados em um estado em que não pode ser iniciado como um banco de dados primário. O banco de dados precisa se reconectar como um banco de dados secundário ou você precisa aplicar novos registros de log de um backup de log.4 = Inicialização. Indica a fase de desfazer quando o log de transações necessário para um banco de dados secundário alcançar o LSN de desfazer está sendo enviado e protegido em uma réplica secundária.Cuidado: Quando um banco de dados em uma réplica secundária está no estado INITIALIZING , forçar o failover para a réplica secundária deixa o banco de dados em um estado em que não pode ser iniciado como um banco de dados primário. O banco de dados precisa se reconectar como um banco de dados secundário ou você precisa aplicar novos registros de log de um backup de log. |
synchronization_state_desc |
nvarchar(60) | Descrição do estado de movimentação de dados, um dos seguintes:NOT SYNCHRONIZING SYNCHRONIZING SYNCHRONIZED REVERTING INITIALIZING |
is_commit_participant |
pouco |
0 = A confirmação de transação não está sincronizada em relação a esse banco de dados.1 = A confirmação de transação é sincronizada em relação a esse banco de dados.Para um banco de dados em uma réplica de disponibilidade de confirmação assíncrona, esse valor é sempre 0 .Para um banco de dados em uma réplica de disponibilidade de confirmação síncrona, esse valor é preciso apenas no banco de dados primário. |
synchronization_health |
minúsculo | Reflete a interseção do estado de sincronização de um banco de dados associado ao grupo de disponibilidade na réplica de disponibilidade e o modo de disponibilidade da réplica de disponibilidade (modo de confirmação síncrona ou assíncrona). Pode ser um dos seguintes valores.0 = Não saudável. O synchronization_state da base de dados é 0 (NOT SYNCHRONIZING ).1 = Parcialmente saudável. Um banco de dados em uma réplica de disponibilidade de confirmação síncrona é considerado parcialmente íntegro se synchronization_state estiver 1 (SYNCHRONIZING ).2 = Saudável. Um banco de dados em uma réplica de disponibilidade de confirmação síncrona é considerado íntegro se synchronization_state estiver 2 (SYNCHRONIZED ), e um banco de dados em uma réplica de disponibilidade de confirmação assíncrona é considerado íntegro se synchronization_state estiver 1 (SYNCHRONIZING ). |
synchronization_health_desc |
nvarchar(60) | Descrição do synchronization_health do banco de dados de disponibilidade.NOT_HEALTHY PARTIALLY_HEALTHY HEALTHY |
database_state |
minúsculo |
0 = Online1 = Restaurando2 = Recuperação3 = Recuperação pendente4 = Suspeito5 = Emergência6 = OfflineNota: mesmo que state coluna no sys.databases. |
database_state_desc |
nvarchar(60) | Descrição do database_state da réplica de disponibilidade.ONLINE RESTORING RECOVERING RECOVERY_PENDING SUSPECT EMERGENCY OFFLINE Nota: mesmo que state_desc coluna no sys.databases. |
is_suspended |
pouco | Estado do banco de dados, um dos seguintes:0 = Retomado1 = Suspenso |
suspend_reason |
minúsculo | Se o banco de dados estiver suspenso, o motivo do estado suspenso, um dos seguintes:0 = Ação do usuário1 = Suspender do parceiro2 = Refazer3 = Captura4 = Aplicar5 = Reiniciar6 = Desfazer7 = Revalidação8 = Erro no cálculo do ponto de sincronização de réplica secundária |
suspend_reason_desc |
nvarchar(60) | Descrição do motivo do estado suspenso do banco de dados, um dos seguintes:SUSPEND_FROM_USER = Um usuário suspendeu manualmente a movimentação de dadosSUSPEND_FROM_PARTNER = A réplica do banco de dados é suspensa após um failover forçadoSUSPEND_FROM_REDO = Ocorreu um erro durante a fase de refazerSUSPEND_FROM_APPLY = Ocorreu um erro ao gravar o log no arquivo (consulte o log de erros)SUSPEND_FROM_CAPTURE = Ocorreu um erro ao capturar o log na réplica primáriaSUSPEND_FROM_RESTART = A réplica do banco de dados foi suspensa antes que o banco de dados fosse reiniciado (consulte o log de erros)SUSPEND_FROM_UNDO = Ocorreu um erro durante a fase de desfazer (consulte o registo de erros)SUSPEND_FROM_REVALIDATION = A incompatibilidade de alteração de log é detetada na reconexão (consulte o log de erros)SUSPEND_FROM_XRF_UPDATE = Não é possível encontrar o ponto de log comum (consulte o log de erros) |
recovery_lsn |
numérico(25,0) | Na réplica primária, o final do log de transações antes do banco de dados primário grava quaisquer novos registros de log após recuperação ou failover. Para um determinado banco de dados secundário, se esse valor for menor que o LSN protegido atual (last_hardened_lsn ), recovery_lsn é o valor para o qual esse banco de dados secundário precisaria ressincronizar (ou seja, reverter e reinicializar). Se esse valor for maior ou igual ao LSN protegido atual, a ressincronização será desnecessária e não ocorrerá.O recovery_lsn reflete um ID de bloco de log acolchoado com zeros. Não é uma LSN real. Para obter informações sobre como esse valor é derivado, consulte Compreender os valores da coluna LSN, mais adiante neste artigo. |
truncation_lsn |
numérico(25,0) | Na réplica primária, para o banco de dados primário, reflete o LSN mínimo de truncamento de log em todos os bancos de dados secundários correspondentes. Se o truncamento de log local for bloqueado (como por uma operação de backup), esse LSN poderá ser maior do que o LSN de truncamento local. Para um determinado banco de dados secundário, reflete o ponto de truncamento desse banco de dados. truncation_lsn reflete um ID de bloco de log acolchoado com zeros. Não é um número de sequência de log real. |
last_sent_lsn |
numérico(25,0) | Quando você consulta a réplica primária, last_sent_lsn é relatada para cada linha de banco de dados de réplica secundária. O identificador de bloco de log que indica o ponto até o qual todos os blocos de log foram enviados pelo primário. Este é o ID do próximo bloco de log enviado, em vez do ID do bloco de log enviado mais recentemente.last_sent_lsn reflete um ID de bloco de log acolchoado com zeros. Não é um número de sequência de log real. |
last_sent_time |
datetime | Quando você consulta a réplica primária, last_sent_time é relatada para cada linha de banco de dados de réplica secundária. Hora em que o último bloco de log foi enviado. |
last_received_lsn |
numérico(25,0) | Quando você consulta uma réplica secundária, last_received_lsn é relatada para a linha do banco de dados da réplica secundária local. ID do bloco de log que identifica o ponto até o qual todos os blocos de log foram recebidos pela réplica secundária que hospeda esse banco de dados secundário.O last_received_lsn reflete um ID de bloco de log acolchoado com zeros. Não é um número de sequência de log real. |
last_received_time |
datetime | Quando você consulta uma réplica secundária, last_received_time é relatada para a linha do banco de dados da réplica secundária local. Hora em que o ID do bloco de log na última mensagem recebida foi lido na réplica secundária. |
last_hardened_lsn |
numérico(25,0) | Início do bloco de log que contém os registros de log da última LSN protegida em um banco de dados secundário. Em um banco de dados primário de confirmação assíncrona ou em um banco de dados de confirmação síncrona cuja política atual é delay , o valor é NULL . Para outros bancos de dados primários de confirmação síncrona, last_hardened_lsn indica o mínimo de LSN protegido em todos os bancos de dados secundários.Nota: o last_hardened_lsn reflete um ID de bloco de log acolchoado com zeros. Não é um número de sequência de log real. Para obter mais informações, consulte Compreender os valores da coluna LSN, mais adiante neste artigo. |
last_hardened_time |
datetime | Em um banco de dados secundário, hora do identificador de bloco de log para o último LSN protegido (last_hardened_lsn ). Em um banco de dados primário, reflete o tempo correspondente ao LSN mínimo endurecido. |
last_redone_lsn |
numérico(25,0) | Número de sequência de log real do último registro de log que foi refeito no banco de dados secundário. O last_redone_lsn é sempre inferior a last_hardened_lsn . |
last_redone_time |
datetime | Hora em que o último registro de log foi refeito no banco de dados secundário. |
log_send_queue_size |
bigint | Número de registros de log do banco de dados primário que não foi enviado para os bancos de dados secundários, em kilobytes (KB). |
log_send_rate |
bigint | Taxa média na qual a instância de réplica primária enviou dados durante o último período ativo, em kilobytes (KB)/segundo. |
redo_queue_size |
bigint | Número de registros de log nos arquivos de log da réplica secundária que ainda não foram refeitos, em kilobytes (KB). |
redo_rate |
bigint | Taxa média na qual os registros de log estão sendo refeitos em um determinado banco de dados secundário, em kilobytes (KB)/segundo.redo_rate é calculado dividindo o total de bytes de log refeitos desde a inicialização do mecanismo de banco de dados pelo período de tempo em que o refazer foi executado ativamente, em vez de pelo tempo decorrido. Como Database Replica:Redone Bytes/sec refazer pode não estar sendo executado continuamente, o valor resultante pode ser diferente (maior) do que o valor de contador de desempenho. |
filestream_send_rate |
bigint | Especifica a taxa na qual os arquivos FILESTREAM são enviados para a réplica secundária, em kilobytes (KB)/segundo. |
end_of_log_lsn |
numérico(25,0) | Fim local do log LSN. LSN real correspondente ao último registro de log no cache de log nos bancos de dados primário e secundário. Na réplica primária, as linhas secundárias refletem o fim do LSN de log das mensagens de progresso mais recentes que as réplicas secundárias enviaram para a réplica primária.end_of_log_lsn reflete um ID de bloco de log acolchoado com zeros. Não é um número de sequência de log real. Para obter mais informações, consulte Compreender os valores da coluna LSN, mais adiante neste artigo. |
last_commit_lsn |
numérico(25,0) | Número de sequência de log real correspondente ao último registro de confirmação no log de transações. No banco de dados primário, isso corresponde ao último registro de confirmação processado. As linhas para bancos de dados secundários mostram o número de sequência de log que a réplica secundária enviou para a réplica primária. Na réplica secundária, este é o último registro de confirmação que foi refeito. |
last_commit_time |
datetime | Tempo correspondente ao último registro de confirmação. No banco de dados secundário, esse tempo é o mesmo que no banco de dados primário. Na réplica primária, cada linha de banco de dados secundária exibe o tempo que a réplica secundária que hospeda o banco de dados secundário reportou de volta para a réplica primária. A diferença de tempo entre a linha do banco de dados primário e uma determinada linha do banco de dados secundário representa aproximadamente o RPO (Recovery Point Objetive, objetivo de ponto de recuperação), supondo que o processo de refazer seja recuperado e que o progresso tenha sido relatado de volta à réplica primária pela réplica secundária. Para obter mais informações, consulte Cálculo de RPO de banco de dados secundário |
low_water_mark_for_ghosts |
bigint | Um número monotonicamente crescente para o banco de dados indicando uma marca d'água baixa usada pela limpeza de armazenamento de versão fantasma e persistente no banco de dados primário. Se uma carga de trabalho de gravação estiver sendo executada no principal, mas esse número não estiver aumentando com o tempo, isso implica que a limpeza do armazenamento de versões fantasma e persistente pode ser mantida. Para decidir quais linhas fantasmas e quais versões de linha limpar, a réplica primária usa o valor mínimo desta coluna para esse banco de dados em todas as réplicas (incluindo a réplica primária). |
secondary_lag_seconds |
bigint | O número de segundos em que a réplica secundária está atrás da réplica primária durante a sincronização. Na réplica primária, o atraso de sincronização (atraso de) para cada banco de dados secundário é calculado como o número de segundos desde a proteção do LSN protegido mais antigo na réplica primária que ainda não foi protegido na réplica secundária. Esse valor é mostrado como 0 se a movimentação de dados estiver suspensa. O movimento de dados precisa estar em um estado não suspenso para que esse valor mostre atraso ativo.Aplica-se a: SQL Server 2016 (13.x) e versões posteriores. |
Compreender os valores da coluna LSN
Os valores das colunas end_of_log_lsn
, last_hardened_lsn
, last_received_lsn
, last_sent_lsn
, recovery_lsn
e truncation_lsn
não são números de sequência de log (LSNs) reais. Em vez disso, cada um desses valores reflete um ID de bloco de log acolchoado com zeros.
end_of_log_lsn
, last_hardened_lsn
e recovery_lsn
são LSNs flush. Por exemplo, last_hardened_lsn
indica o início do próximo bloco após os blocos que já estão no disco. Assim, qualquer LSN menos o valor de last_hardened_lsn
está no disco. As LSNs maiores ou iguais a esse valor não são liberadas.
Dos valores de LSN retornados por sys.dm_hadr_database_replica_states
, apenas last_redone_lsn
é uma LSN real.
Permissões
O SQL Server 2019 (15.x) e versões anteriores exigem permissão de VIEW SERVER STATE
no servidor.
O SQL Server 2022 (16.x) e versões posteriores exigem VIEW SERVER PERFORMANCE STATE
permissão no servidor.