sys.dm_hadr_database_replica_states (Transact-SQL)

Область применения: SQL Server Управляемый экземпляр SQL Azure

Возвращает по строке для каждой базы данных, которая входит в группу доступности AlwaysOn, реплика доступности которой размещена в локальном экземпляре SQL Server. Это динамическое административное представление предоставляет сведения о состоянии первичной и вторичной реплик. На вторичной реплике это представление возвращает по строке для каждой из баз данных-получателей на экземпляре сервера. В первичной реплике это представление возвращает строку для каждой базы данных-источника и дополнительную строку для соответствующей базы данных-получателя.

Внимание

В зависимости от действий и состояний более высокого уровня сведения о состоянии базы данных могут быть недоступными или устаревшими. Кроме того, эти значения имеют смысл только в локальном контексте. Например, в первичной реплике значение last_hardened_lsn столбца отражает сведения о заданной базе данных-получателе, которая в настоящее время доступна первичной реплике, а не фактическому номеру последовательности журналов (LSN), который в настоящее время может иметь вторичная реплика.

Имя столбца Тип данных Описание (в основной реплике)
database_id int Идентификатор базы данных, который является уникальным в рамках экземпляра SQL Server. Это то же значение, что и в представлении каталога sys.database .
group_id uniqueidentifier Идентификатор группы доступности, к которой принадлежит база данных.
replica_id uniqueidentifier Идентификатор реплики доступности в группе доступности.
group_database_id uniqueidentifier Идентификатор базы данных из группы доступности. Этот идентификатор совпадает на всех репликах, к которым присоединена эта база данных.
is_local bit Является ли база данных доступности локальной. Может принимать одно из следующих значений:

0 = база данных не является локальной для экземпляра SQL Server.
1 = база данных является локальной для экземпляра сервера.
is_primary_replica bit Возвращает значение 1 , если реплика является первичной или 0 является вторичной репликой.

Область применения: SQL Server 2014 (12.x) и более поздних версий.
synchronization_state tinyint Состояние перемещения данных— одно из следующих значений.

0 = не синхронизируется. Для базы данных-источника указывается, что база данных не готова синхронизировать журнал транзакций с соответствующими базами данных-получателями. Для базы данных-получателя это значение указывает, что база данных не запустила синхронизацию журналов из-за проблемы с подключением, приостановлена или проходит через состояния перехода во время запуска или переключения ролей.

1 = синхронизация. Для базы данных-источника указывает, что база данных готова принимать запросы на просмотр от базы данных-получателя. Для базы данных-получателя указывает, что происходит активное перемещение данных.

2 = синхронизировано. База данных-источник отображается SYNCHRONIZED вместо SYNCHRONIZING. Состояние базы данных-получателя с синхронной фиксацией отображается как «SYNCHRONIZED» в том случае, когда с точки зрения локального кэша база данных готова к отработке отказа и находится в процессе синхронизации.

3 = отмена. Обозначает этап процесса отката, в котором база данных-получатель активно получает страницы с базы данных-источника.

Внимание. Если база данных на вторичной реплике находится в REVERTING состоянии, принудительная отработка отказа на вторичную реплику покидает базу данных в состоянии, в котором она не может быть запущена в качестве базы данных-источника. Необходимо повторно подключить базу данных как базу данных-получатель или применить новые записи журнала из резервной копии журнала.

4 = инициализация. Обозначает этап процесса отката, на котором журнал транзакций, по которому базе данных-получателю необходимо устранить вплоть до номера LSN, который доставляется и фиксируется на вторичной реплике.

Внимание. Если база данных на вторичной реплике находится в INITIALIZING состоянии, принудительная отработка отказа на вторичную реплику покидает базу данных в состоянии, в котором она не может быть запущена в качестве базы данных-источника. Необходимо повторно подключить базу данных как базу данных-получатель или применить новые записи журнала из резервной копии журнала.
synchronization_state_desc nvarchar(60) Одно из следующих описаний состояния перемещения файла.

NOT SYNCHRONIZING
SYNCHRONIZING
SYNCHRONIZED
REVERTING
INITIALIZING
is_commit_participant bit 0 = фиксация транзакций не синхронизируется с этой базой данных.

1 = фиксация транзакций синхронизируется с этой базой данных.

Для базы данных в реплике доступности асинхронной фиксации это значение всегда 0равно.

Что касается базы данных в реплике доступности с синхронной фиксацией, то данное значение является точным только в базе данных-источнике.
synchronization_health tinyint Отражает пересечение состояния синхронизации базы данных, присоединенной к группе доступности в реплике доступности, и режим доступности реплики доступности (режим синхронной фиксации или асинхронной фиксации). Может быть одним из следующих значений.

0 = нездорово. База synchronization_state данных имеет значение 0 (NOT SYNCHRONIZING).

1 = частично работоспособный. База данных в реплике доступности синхронной фиксации считается частично работоспособной, если synchronization_state это 1 (SYNCHRONIZING).

2 = работоспособный. База данных на реплике доступности синхронной фиксации считается работоспособной, если synchronization_state это 2 (SYNCHRONIZED), а база данных на реплике доступности асинхронной фиксации считается работоспособной, если synchronization_state это 1 (SYNCHRONIZING).
synchronization_health_desc nvarchar(60) synchronization_health Описание базы данных доступности.

NOT_HEALTHY
PARTIALLY_HEALTHY
HEALTHY
database_state tinyint 0 = Online
1 = восстановление
2 = восстановление
3 = ожидание восстановления
4 = подозреваемый
5 = экстренное реагирование
6 = автономный

Примечание. То же, что state и столбец в sys.databases.
database_state_desc nvarchar(60) database_state Описание реплики доступности.

ONLINE
RESTORING
RECOVERING
RECOVERY_PENDING
SUSPECT
EMERGENCY
OFFLINE

Примечание. То же, что state_desc и столбец в sys.databases.
is_suspended bit Состояние базы данных. Может принимать одно из следующих значений:

0 = возобновлено
1 = приостановлено
suspend_reason tinyint Если база данных приостановлена, то причина состояния приостановки. Может принимать одно из следующих значений:

0 = действие пользователя
1 = приостановка от партнера
2 = Redo
3 = захват
4 = Применить
5 = перезапуск
6 = Отмена
7 = повторная проверка
8 = ошибка в вычислении точки синхронизации вторичной реплики
suspend_reason_desc nvarchar(60) Описание причины приостановки базы данных. Может принимать одно из следующих значений:

SUSPEND_FROM_USER = пользователь вручную приостановил перемещение данных

SUSPEND_FROM_PARTNER = реплика базы данных приостановлена после принудительной отработки отказа

SUSPEND_FROM_REDO = ошибка произошла во время этапа повторного выполнения

SUSPEND_FROM_APPLY = ошибка при записи журнала в файл (см. журнал ошибок)

SUSPEND_FROM_CAPTURE = произошла ошибка при записи журнала на первичной реплике

SUSPEND_FROM_RESTART = реплика базы данных была приостановлена до перезапуска базы данных (см. журнал ошибок)

SUSPEND_FROM_UNDO = ошибка произошла во время этапа отмены (см. журнал ошибок)

SUSPEND_FROM_REVALIDATION = несоответствие изменений журнала обнаруживается при повторном подключении (см. журнал ошибок)

SUSPEND_FROM_XRF_UPDATE = Не удается найти общую точку журнала (см. журнал ошибок)
recovery_lsn numeric(25,0) На первичной реплике окончание журнала транзакций до того, как база данных-источник запишет новые записи журнала после восстановления или перехода на другой ресурс. Для данной базы данных-получателя, если это значение меньше текущего защищенного LSN (last_hardened_lsn), recovery_lsn является значением, в котором эта база данных-получатель должна будет повторно выполнить повторную синхронизацию (т. е. вернуться к и повторной инициализации). Если это значение больше или равно текущему защищенному LSN, повторная синхронизация будет ненужной и не произойдет.

Отражает recovery_lsn идентификатор блока журнала, заполненный нулями. Это не фактическая LSN. Дополнительные сведения о том, как это значение является производным, см. в разделе "Общие сведения о значениях столбцов LSN" далее в этой статье.
truncation_lsn numeric(25,0) В первичной реплике, применительно к базе данных-источнику, соответствует минимальному номеру LSN для усечения журнала среди всех соответствующих баз данных-получателей. В случае блокировки усечения журнала (например в ходе резервного копирования) данный номер LSN может быть выше локального номера LSN для усечения.

Соответствует точке усечения для заданной базы данных-получателя.
truncation_lsn отражает идентификатор блока журнала, заполненный нулями. Это не фактический номер последовательности журналов.
last_sent_lsn numeric(25,0) При запросе первичной реплики last_sent_lsn сообщается для каждой строки базы данных-получателя. Идентификатор блока журнала, указывающий точку, вплоть до которой все блоки журнала были отправлены источником. Это идентификатор следующего блока журнала, который отправляется, а не идентификатор последнего отправленного блока журнала.

last_sent_lsn отражает идентификатор блока журнала, заполненный нулями. Это не фактический номер последовательности журналов.
last_sent_time datetime При запросе первичной реплики last_sent_time сообщается для каждой строки базы данных-получателя. Время отправки последнего блока журнала.
last_received_lsn numeric(25,0) При запросе вторичной реплики сообщается для строки базы данных локальной реплики-получателя last_received_lsn . Идентификатор блока журнала, указывающий точку, вплоть до которой все блоки журнала были получены вторичной репликой, на которой размещена эта база данных-получатель.

Отражает last_received_lsn идентификатор блока журнала, заполненный нулями. Это не фактический номер последовательности журналов.
last_received_time datetime При запросе вторичной реплики сообщается для строки базы данных локальной реплики-получателя last_received_time . Отметка времени, когда идентификатор блока журнала в последнем сообщении был прочитан вторичной репликой.
last_hardened_lsn numeric(25,0) Начало блока журнала, содержащего записи журнала последней защищенной LSN в базе данных-получателе.

В базе данных-источнике асинхронной фиксации или в базе данных синхронной фиксации, NULLтекущая политика которой имеет delayзначение. Для других баз данных-источника last_hardened_lsn синхронной фиксации указывает минимум защищенного LSN во всех базах данных-получателях.

Примечание. Отражает last_hardened_lsn идентификатор блока журнала, заполненный нулями. Это не фактический номер последовательности журналов. Дополнительные сведения см. в разделе "Общие сведения о значениях столбцов LSN" далее в этой статье.
last_hardened_time datetime В базе данных-получателе время идентификатора блока журнала для последнего защищенного LSN (last_hardened_lsn). В базе данных-источнике соответствует времени минимального фиксированного номера LSN.
last_redone_lsn numeric(25,0) Фактический регистрационный номер транзакции последней записи в журнале, повторенной в базе данных-получателе. Всегда last_redone_lsn меньше last_hardened_lsn.
last_redone_time datetime Время повторения последней записи на базе данных-получателе.
log_send_queue_size bigint Количество записей журналов базы данных-источника, которая не была отправлена в базы данных-получатель в килобайтах (КБ).
log_send_rate bigint Средняя скорость отправки данных первичной реплики в течение последнего активного периода в килобайтах (КБ)/в секунду.
redo_queue_size bigint Количество записей журнала в файлах журнала вторичной реплики, которые еще не были переопределены в килобайтах (КБ).
redo_rate bigint Средняя скорость повторного изменения записей журнала в заданной базе данных-получателе в килобайтах (КБ)/в секунду.

redo_rate вычисляется путем деления общего байта байтов журнала, так как ядро СУБД запускается на период времени, когда повторное выполнение активно выполняется, а не по истечении времени. Так как повтор может не выполняться непрерывно, результирующее значение может отличаться (выше) от значения счетчика Database Replica:Redone Bytes/sec производительности.
filestream_send_rate bigint Указывает скорость отправки файлов FILESTREAM в вторичную реплику в килобайтах (КБ)/в секунду.
end_of_log_lsn numeric(25,0) Номер LSN конца локального журнала. Фактический номер LSN, соответствующий последней записи журнала в кэше журнала на базах данных источника и получателя. На первичной реплике вторичные строки отражают конец LSN журнала из последних сообщений о ходе выполнения, которые вторичные реплики отправляются в первичную реплику.

end_of_log_lsn отражает идентификатор блока журнала, заполненный нулями. Это не фактический номер последовательности журналов. Дополнительные сведения см. в разделе "Общие сведения о значениях столбцов LSN" далее в этой статье.
last_commit_lsn numeric(25,0) Фактический регистрационный номер транзакции в журнале, соответствующий последней записи фиксации в журнале транзакций.

На базе данных-источнике он соответствует последней обработанной записи фиксации. Строки для баз данных-получателей показывают номер последовательности журнала, отправляемый вторичной реплике в первичную реплику.
На вторичной реплике это последняя запись фиксации, которая была повторена.
last_commit_time datetime Время, соответствующее последней записи фиксации.

На базе данных-получателе это время совпадает со временем на базе данных-источнике.

На первичной реплике каждая строка базы данных-получателя отображает время, в котором размещается вторичная реплика базы данных-получатель, сообщаемая обратно первичной реплике. Разница во времени между строкой первичной базы данных и заданной строкой базы данных-получателя представляет приблизительно цель точки восстановления (RPO), предполагая, что процесс повтора перехвата и что ход выполнения был передан первичной реплике вторичной репликой.
low_water_mark_for_ghosts bigint Непрерывно возрастающее число для базы данных, указывающее метку низкого уровня, которая используется задачей очистки фантомных записей в базе данных-источнике. Если это число не увеличивается со временем, это означает, что очистка призрака может не произойти. Чтобы определить, какие из фантомных строк необходимо очистить, первичная реплика использует минимальное значение данного столбца в этой базе данных по всем репликам доступности (включая первичную реплику).
secondary_lag_seconds bigint Количество секунд, в течение которых вторичная реплика находится за первичной репликой во время синхронизации.

На первичной реплике задержка синхронизации (задержка) для каждой базы данных-получателя вычисляется как количество секунд после затвердения самого раннего жесткого LSN на первичной реплике, которая еще не была затвердена на вторичной реплике. Это значение показывает, как 0 если бы перемещение данных приостановлено. Перемещение данных должно находиться в состоянии без приостановки, чтобы это значение отображалось активной задержкой.

Область применения: SQL Server 2016 (13.x) и более поздних версий.

Общие сведения о значениях столбцов LSN

Значения столбцов end_of_log_lsn, , last_hardened_lsnи last_received_lsnlast_sent_lsnrecovery_lsntruncation_lsn столбцов не являются фактическими номерами последовательности журналов (LSN). Вместо этого каждое из данных значений представляет идентификатор блока журнала, дополненный нулями.

end_of_log_lsn, last_hardened_lsnи recovery_lsn являются сбросом LSN. Например, last_hardened_lsn указывает начало следующего блока после блоков, которые уже находятся на диске. Поэтому любое LSN меньше значения last_hardened_lsn находится на диске. LSN, которые больше или равно этому значению, не удаляются.

Из значений LSN, возвращаемых sys.dm_hadr_database_replica_statesтолько last_redone_lsn реальным LSN.

Разрешения

ДЛЯ SQL Server 2019 (15.x) и более ранних версий требуется VIEW SERVER STATE разрешение на сервере.

ДЛЯ SQL Server 2022 (16.x) и более поздних версий требуется VIEW SERVER PERFORMANCE STATE разрешение на сервере.