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 = Online1 = восстановление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 = Redo3 = захват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_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.
Разрешения
ДЛЯ SQL Server 2019 (15.x) и более ранних версий требуется VIEW SERVER STATE
разрешение на сервере.
ДЛЯ SQL Server 2022 (16.x) и более поздних версий требуется VIEW SERVER PERFORMANCE STATE
разрешение на сервере.