sys.dm_hadr_database_replica_states (Transact-SQL)

Применимо к:SQL Server

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

Важно!

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

Имя столбца Тип данных Описание (в основной реплике)
database_id int Идентификатор базы данных, который является уникальным в рамках экземпляра SQL Server. Это то же значение, что и в представлении каталога sys.databases .
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 (НЕ 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 = В сети

1 = Восстановление из копии

2 = Восстановление

3 = В ожидании восстановления

4 = Подозрительное состояние

5 = Тревога

6 = В автономном режиме

Примечание: То же, что и столбец состояния в 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 = Повтор

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. Для других баз данных-источника 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 Средняя скорость, с которой записи журнала переделываются в заданной базе данных-получателе, в килобайтах (КБ)/с.
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 Количество секунд, в течение которых вторичная реплика отстает от первичной реплики во время синхронизации.

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

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

Значения столбцов end_of_log_lsn, last_hardened_lsn, last_received_lsn, last_sent_lsn, recovery_lsn и truncation_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.

Безопасность

Разрешения

необходимо разрешение VIEW SERVER STATE на сервере.

См. также:

Группы доступности AlwaysOn (SQL Server)
Отслеживание групп доступности (Transact-SQL)