sys.dm_hadr_database_replica_states (Transact-SQL)

Возвращает по строке для каждой из баз данных, участвующих в группе доступности 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 = база данных локальна по отношению к экземпляру сервера.

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 = в сети

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 в 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_time

datetime

Время отправки последнего блока журнала.

last_received_lsn

numeric(25,0)

Идентификатор блока журнала, указывающий точку, вплоть до которой все блоки журнала были получены вторичной репликой, на которой размещена эта база данных-получатель.

last_received_lsn представляет идентификатор блока журнала, дополненный нулями. Это не фактический регистрационный номер транзакции в журнале.

last_received_time

datetime

Отметка времени, когда идентификатор блока журнала в последнем сообщении был прочитан вторичной репликой.

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

Время, соответствующее последней записи фиксации.

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

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

low_water_mark_for_ghosts

bigint

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

Основные сведения о значениях столбца 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)