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 (НЕ SYNCHRONIZING). 1 = частично работоспособный. База данных в реплике доступности синхронной фиксации считается частично работоспособной, если synchronization_state равно 1 (SYNCHRONIZING). 2 = работоспособный. База данных на реплике доступности синхронной фиксации считается работоспособной, если synchronization_state 2 (SYNCD), а база данных в реплике доступности асинхронной фиксации считается работоспособной, если synchronization_state равен 1 (SYNCHRONIZING). |
synchronization_health_desc | nvarchar(60) | Описание synchronization_health базы данных доступности. NOT_HEALTHY PARTIALLY_HEALTHY РАБОТОСПОСОБНО |
database_state | tinyint | 0 = В сети 1 = Восстановление из копии 2 = Восстановление 3 = В ожидании восстановления 4 = Подозрительное состояние 5 = Тревога 6 = В автономном режиме Примечание. То же, что и столбец состояния в sys.database. |
database_state_desc | nvarchar(60) | Описание database_state реплики доступности. ONLINE RESTORING RECOVERING RECOVERY_PENDING SUSPECT АВАРИЙНЫЙ РЕЖИМ OFFLINE Примечание. То же, что state_desc и столбец в sys.database. |
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 | Средняя скорость повторного изменения записей журнала в заданной базе данных-получателе в килобайтах (КБ)/в секунду. 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 | Числовой(25,0) | Фактический регистрационный номер транзакции в журнале, соответствующий последней записи фиксации в журнале транзакций. На базе данных-источнике он соответствует последней обработанной записи фиксации. Строки для баз данных-получателей показывают последовательный номер транзакции в журнале, переданный вторичной репликой в первичную. На вторичной реплике это последняя запись фиксации, которая была повторена. |
last_commit_time | datetime | Время, соответствующее последней записи фиксации. На базе данных-получателе это время совпадает со временем на базе данных-источнике. На первичной реплике в строках каждой из баз данных-получателей отображается время, возвращенное первичной реплике с вторичной реплики, на которой размещена соответствующая база данных-получатель. Разница во времени между строкой первичной базы данных и заданной строкой базы данных-получателем представляет приблизительно цель точки восстановления (RPO), предполагая, что процесс повторного выполнения выполняется и что ход выполнения передается первичной реплике вторичной репликой. |
low_water_mark_for_ghosts | bigint | Непрерывно возрастающее число для базы данных, указывающее метку низкого уровня, которая используется задачей очистки фантомных записей в базе данных-источнике. Если это число с течением времени не увеличивается, то задача очистки фантомных записей, вероятно, не выполняется. Чтобы определить, какие из фантомных строк необходимо очистить, первичная реплика использует минимальное значение данного столбца в этой базе данных по всем репликам доступности (включая первичную реплику). |
secondary_lag_seconds | bigint | Количество секунд, в течение которых вторичная реплика находится за первичной репликой во время синхронизации. На первичной реплике задержка синхронизации (задержка) для каждой базы данных-получателя вычисляется как количество секунд после затвердения самого раннего жесткого LSN на первичной реплике, которая еще не была затвердена на вторичной реплике. Область применения: 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 на сервере.
Разрешения для SQL Server 2022 и более поздних версий
Требуется разрешение VIEW SERVER PERFORMANCE STATE на сервере.
См. также
Группы доступности AlwaysOn (SQL Server)
Отслеживание групп доступности (Transact-SQL)