Настройка расширенных событий для групп доступности
Область применения: SQL Server
SQL Server определяет расширенные события, относящиеся к группам доступности. Эти расширенные события можно отслеживать в сеансе, чтобы помочь в диагностике первопричин при устранении неполадок группы доступности. Расширенные события группы доступности можно просмотреть с помощью следующего запроса:
SELECT * FROM sys.dm_xe_objects WHERE name LIKE '%hadr%';
Сеанс alwayson_health
Сеанс alwayson_health
расширенных событий создается автоматически при создании группы доступности и записывает подмножество связанных событий группы доступности. Этот сеанс предварительно настроен в качестве удобного средства, которое поможет вам быстрее приступить к устранению неполадок для группы доступности. Мастер создания группы доступности автоматически запускает сеанс на всех участвующих репликах доступности, настроенных в мастере.
Внимание
Если вы не создали группу доступности с помощью мастера создания группы доступности, alwayson_health
сеанс может не запускаться автоматически. Если сеанс не запущен, фиксация данных о событиях в случае непредвиденной проблемы невозможна. Нужно вручную запустить сеанс и с помощью свойств настроить его для автоматического запуска.
Чтобы просмотреть определение сеанса alwayson_health
, выполните следующие действия.
В обозревателе объектов разверните узлы Управление, Расширенные события и Сеансы.
Щелкните правой кнопкой мыши Alwayson_health, а затем наведите указатель мыши на сеанс скрипта, а затем выберите "Создать" Редактор запросов окно.
Расширенные события для отладки
Помимо расширенных событий, охваченных сеансом Alwayson_health, SQL Server определяет обширный набор событий отладки для групп доступности. Чтобы использовать эти дополнительные расширенные события в сеансе, выполните следующие процедуры:
В обозревателе объектов разверните узлы Управление, Расширенные события и Сеансы.
Щелкните правой кнопкой мыши элемент Сеансы и выберите Создать сеанс. Либо щелкните правой кнопкой элемент Alwayson_health и выберите Свойства.
На панели "Выбор страницы" выберите "События".
В столбце Категория библиотеки событий выберите alwayson и очистите остальные категории.
В столбце Канал выберите Отладка. Все события, связанные с группой доступности, которые еще не выбраны, теперь отображаются в библиотеке событий.
Выделите событие в библиотеке событий, а затем нажмите > кнопку, чтобы выбрать ее для сеанса.
После завершения сеанса нажмите кнопку "ОК ", чтобы закрыть ее. Убедитесь, что сеанс запущен, чтобы он фиксировал выбранные вами события.
availability_replica_state_change
Возникает при изменении состояния реплики доступности. Создание группы доступности или присоединение к реплике доступности может вызывать это событие. Это удобно при диагностике сбоя автоматического перехода на другой ресурс. Его также можно использовать для трассировки шагов перехода на другой ресурс.
Сведения о событии
Столбец | Описание: |
---|---|
Имя. | availability_replica_state_change |
Категория | always on |
Канал | Операционный |
Поля событий
Имя. | Type_name | Description |
---|---|---|
availability_group_id | guid | Идентификатор группы доступности. |
availability_group_name | unicode_string | Имя группы доступности. |
availability_replica_id | guid | Идентификатор реплики доступности. |
previous_state | availability_replica_state | Роль реплики перед изменением. Возможны следующие значения: Primary_Normal Secondary_Normal Resolving_Pending_Failover Resolving_Normal Primary_Pending Not_Available |
current_state | availability_replica_state | Роль реплики после изменения. Возможны следующие значения: Primary_Normal Secondary_Normal Resolving_Pending_Failover Resolving_Normal Primary_Pending Not_Available |
Определение сеанса alwayson_health
CREATE EVENT SESSION [alwayson_health] ON SERVER
ADD EVENT availability_replica_state_change
ADD TARGET package0.event_file (
SET filename = N'alwayson_health.xel',
max_file_size = (5),
max_rollover_files = (4),
metadatafile = N'alwayson_health.xem'
)
WITH (
MAX_MEMORY = 4096 KB,
EVENT_RETENTION_MODE = ALLOW_SINGLE_EVENT_LOSS,
MAX_DISPATCH_LATENCY = 30 SECONDS,
MAX_EVENT_SIZE = 0 KB,
MEMORY_PARTITION_MODE = NONE,
TRACK_CAUSALITY = OFF,
STARTUP_STATE = ON
)
GO
availability_group_lease_expired
Возникает, когда для кластера и группы доступности имеется проблема подключения, а также истек срок аренды. Это событие указывает, что нарушено подключение между группой доступности и базовым кластером WSFC. При возникновении проблемы подключения на первичной реплике это событие может вызвать автоматический переход на другой ресурс или перевести группу доступности в автономный режим.
Сведения о событии
Столбец | Описание: |
---|---|
Имя. | availability_group_lease_expired |
Категория | always on |
Канал | Операционный |
Поля событий
Имя. | Type_name | Description |
---|---|---|
availability_group_id | guid | Идентификатор группы доступности. |
availability_group_name | unicode_string | Имя группы доступности. |
Определение сеанса alwayson_health
CREATE EVENT SESSION [alwayson_health] ON SERVER
ADD EVENT availability_group_lease_expired
ADD TARGET package0.event_file (
SET filename = N'alwayson_health.xel',
max_file_size = (5),
max_rollover_files = (4),
metadatafile = N'alwayson_health.xem'
)
WITH (
MAX_MEMORY = 4096 KB,
EVENT_RETENTION_MODE = ALLOW_SINGLE_EVENT_LOSS,
MAX_DISPATCH_LATENCY = 30 SECONDS,
MAX_EVENT_SIZE = 0 KB,
MEMORY_PARTITION_MODE = NONE,
TRACK_CAUSALITY = OFF,
STARTUP_STATE = ON
)
GO
availability_replica_automatic_failover_validation
Возникает, когда автоматический переход на другой ресурс проверяет готовность реплики доступности в качестве первичной реплики, и показывает, готова ли целевая реплика доступности стать новой первичной репликой. Например, проверка перехода на другой ресурс возвращает значение false, когда синхронизированы или присоединены не все базы данных. Это событие призвано предоставлять точку отказа при переходах на другой ресурс. Эта информация представляет интерес для администратора базы данных, особенно при автоматических переходах на другой ресурс, так как они не требуют вмешательства. Администратор базы данных может просмотреть событие, чтобы узнать причину сбоя автоматического перехода на другой ресурс.
Сведения о событии
Имя | Описание |
---|---|
availability_replica_automatic _failover_validation | |
Категория | always on |
Канал | Аналитический |
Поля событий
Имя. | Type_name | Description |
---|---|---|
availability_group_id | guid | Идентификатор группы доступности. |
availability_group_name | unicode_string | Имя группы доступности. |
availability_replica_id | guid | Идентификатор реплики доступности. |
forced_quorum | validation_result_type | Если это значение равно TRUE, то автоматический переход на другой ресурс на этой реплике доступности объявляется недействительным. TRUE FALSE |
joined_and_synchronized | validation_result_type | Если это значение равно FALSE, то автоматический переход на другой ресурс на этой реплике доступности объявляется недействительным. TRUE FALSE |
previous_primary_or_automatic_failover_target | validation_result_type | Если это значение равно FALSE, то автоматический переход на другой ресурс на этой реплике доступности объявляется недействительным. TRUE FALSE |
Определение сеанса alwayson_health
CREATE EVENT SESSION [alwayson_health] ON SERVER
ADD EVENT availability_replica_automatic_failover_validation (
WHERE (
[forced_quorum] = (TRUE)
OR [joined_and_synchronized] = (FALSE)
OR [previous_primary_or_automatic_failover_target] = (TRUE)
)
) ADD TARGET package0.event_file (
SET filename = N'alwayson_health.xel',
max_file_size = (5),
max_rollover_files = (4),
metadatafile = N'alwayson_health.xem'
)
WITH (
MAX_MEMORY = 4096 KB,
EVENT_RETENTION_MODE = ALLOW_SINGLE_EVENT_LOSS,
MAX_DISPATCH_LATENCY = 30 SECONDS,
MAX_EVENT_SIZE = 0 KB,
MEMORY_PARTITION_MODE = NONE,
TRACK_CAUSALITY = OFF,
STARTUP_STATE = ON
)
GO
error_reported (несколько номеров ошибок): для проблем с транспортировкой или подключением
Каждое отфильтрованное событие свидетельствует о проблеме подключения в конечной точки зеркального отображения базы данных или транспорта, от которой зависит группа доступности.
Столбец | Описание: |
---|---|
Имя. | error_reported Числа для фильтрации: 35201, 35202, 35206, 35204, 35207, 35217, 9642, 9666, 9691, 9692, 9693, 28034, 28036, 28080, 28091, 33309 |
Категория | ошибки |
Канал | Административный |
Номера ошибок для фильтрации
Номер ошибки | Description |
---|---|
35201 | Истекло время ожидания при попытке установить соединение с репликой доступности "%ls". |
35202 | Соединение для группы доступности "%ls" от реплики доступности "%ls" с идентификатором [%ls] до реплики доступности "%ls" с идентификатором [%ls] было успешно установлено. Это информационное сообщение. Вмешательство пользователя не требуется. |
35206 | Истекло время ожидания для ранее установленного соединения с репликой доступности "%ls". |
35204 | Подключение между экземпляром "%ls" и "%ls" отключено из-за завершения работы конечной точки. |
Время ожидания + подключение | |
35207 | Попытка соединения с идентификатором группы доступности "%ls" из реплики с идентификатором "%ls" к реплике с идентификатором "%ls" завершилась с ошибкой %d, уровень серьезности %d, состояние %d. (Этот вариант может плохо подходить для использования администратором базы данных. В этом случае нужно проверить и удалить его позднее.) |
35217 | (Впервые появилось в SQL Server 2019 CU15 (15.0.4198.2)) Пул потоков для групп доступности Always On не мог запустить новый рабочий поток из-за нехватки доступных рабочих потоков. Это может ухудшить производительность групп доступности Always On. Увеличьте число разрешенных потоков с помощью параметра конфигурации "Макс. число рабочих потоков". |
9642 | Произошла ошибка конечной точки транспорта компонента Service Broker или зеркального отображения базы данных. Ошибка: %i, состояние: %i. (Роль ближней конечной точки: %S_MSG, адрес дальней конечной точки: "%.*hs".) Ошибка: %i, состояние: %i. (Роль ближней конечной точки: %S_MSG, адрес дальней конечной точки: "%.*hs".) |
9666 | Конечная точка %S_MSG находится в отключенном или остановленном состоянии. |
9691 | Конечная точка %S_MSG прекратила прослушивание соединений. |
9692 | Конечная точка %S_MSG не может прослушивать порт %d, поскольку он используется другим процессом. |
9693 | Конечная точка %S_MSG не может прослушивать соединения из-за следующей ошибки: "%.*ls". |
28034 | Ошибка подтверждения соединения. Имя входа "%.*ls" не имеет разрешения CONNECT на конечную точку. Состояние %d. |
28036 | Ошибка подтверждения соединения. Сертификат, используемый данной конечной точкой, не обнаружен: %S_MSG. Используйте DBCC CHECKDB в master базе данных, чтобы проверить целостность метаданных конечных точек. Состояние %d. |
28080 | Ошибка подтверждения соединения. Конечная точка %S_MSG не настроена. Состояние %d. |
28091 | Запуск конечной точки для %S_MSG без проверки подлинности не поддерживается. |
33309 | Не удалось запустить конечную точку кластера, так как конфигурация по умолчанию конечной точки %S_MSG еще не загружена. |
Определение сеанса alwayson_health
CREATE EVENT SESSION [alwayson_health] ON SERVER
ADD EVENT sqlserver.error_reported (
WHERE (
--Connectivity Error Messages
[error_number] = (35201)
OR [error_number] = (35202)
OR [error_number] = (35204)
OR [error_number] = (35206)
OR [error_number] = (35207)
OR [error_number] = (35217)
OR [error_number] = (9642)
--OR [error_number]=(9666)
OR [error_number] = (9691)
OR [error_number] = (9692)
OR [error_number] = (9693)
OR [error_number] = (28034)
OR [error_number] = (28036)
OR [error_number] = (28080)
OR [error_number] = (28091)
OR [error_number] = (33309)
)
) ADD TARGET package0.event_file (
SET filename = N'alwayson_health.xel',
max_file_size = (5),
max_rollover_files = (4),
metadatafile = N'alwayson_health.xem'
)
WITH (
MAX_MEMORY = 4096 KB,
EVENT_RETENTION_MODE = ALLOW_SINGLE_EVENT_LOSS,
MAX_DISPATCH_LATENCY = 30 SECONDS,
MAX_EVENT_SIZE = 0 KB,
MEMORY_PARTITION_MODE = NONE,
TRACK_CAUSALITY = OFF,
STARTUP_STATE = ON
)
GO
data_movement_suspend_resume
Возникает, когда приостановлено или возобновлено перемещение базы данных для реплики базы данных.
Сведения о событии
Столбец | Описание: |
---|---|
Имя. | data_movement_suspend_resume |
Категория | Всегда на месте |
Канал | Операционный |
Поля событий
Имя. | Type_name | Description |
---|---|---|
availability_group_id | guid | Идентификатор группы доступности. |
availability_group_name | unicode_string | Имя группы доступности (при его наличии). |
availability_replica_id | guid | Идентификатор реплики доступности. |
database_replica_id | guid | Идентификатор базы данных доступности. |
database_replica_name | unicode_string | Имя базы данных доступности. |
database_id | uint32 | Идентификатор базы данных доступности. |
suspend_status | suspend_status_type | Значения состояния приостановки. SUSPEND_NULL RESUMED SUSPENDED SUSPENDED_INVALID |
suspend_source | suspend_source_type | Источник действия приостановки или возобновления. |
suspend_reason | unicode_string | Причина приостановки, зарегистрированная диспетчером реплик базы данных. |
Определение сеанса alwayson_health
CREATE EVENT SESSION [alwayson_health] ON SERVER
ADD EVENT data_movement_suspend_resume (
WHERE (
[suspend_status] = (SUSPENDED)
OR [suspend_status] = (SUSPENDED_INVALID)
OR [suspend_status] = (SUSPEND_NULL)
)
) ADD TARGET package0.event_file (
SET filename = N'alwayson_health.xel',
max_file_size = (5),
max_rollover_files = (4),
metadatafile = N'alwayson_health.xem'
)
WITH (
MAX_MEMORY = 4096 KB,
EVENT_RETENTION_MODE = ALLOW_SINGLE_EVENT_LOSS,
MAX_DISPATCH_LATENCY = 30 SECONDS,
MAX_EVENT_SIZE = 0 KB,
MEMORY_PARTITION_MODE = NONE,
TRACK_CAUSALITY = OFF,
STARTUP_STATE = ON
)
GO
alwayson_ddl_executed
Возникает, когда выполняется инструкция языка DDL для группы доступности, включая CREATE, ALTER или DROP. Основной задачей этого события является указание проблемы с действием пользователя на реплике доступности или указание начальной точки оперативного действия, следом за которым возникла проблема среды выполнения, например переход на другой ресурс вручную, принудительный переход на другой ресурс, приостановка или возобновление перемещения данных.
Сведения о событии
Столбец | Описание: |
---|---|
Имя. | alwayson_ddl_execution |
Категория | always on |
Канал | Аналитический |
Поля событий
Имя. | Type_name | Description |
---|---|---|
availability_group_id | GUID | Идентификатор группы доступности. |
availability_group_name | unicode_string | Имя группы доступности. |
ddl_action | alwayson_ddl_action | Указывает тип действия DDL: CREATE, ALTER или DROP. |
ddl_phase | ddl_opcode | Указывает этап выполнения операции DDL: BEGIN, COMMIT или ROLLBACK. |
Оператор | unicode_string | Текст выполненной инструкции. |
Определение сеанса alwayson_health
CREATE EVENT SESSION [alwayson_health] ON SERVER
ADD EVENT alwayson_ddl_executed
ADD TARGET package0.event_file (
SET filename = N'alwayson_health.xel',
max_file_size = (5),
max_rollover_files = (4),
metadatafile = N'alwayson_health.xem'
)
WITH (
MAX_MEMORY = 4096 KB,
EVENT_RETENTION_MODE = ALLOW_SINGLE_EVENT_LOSS,
MAX_DISPATCH_LATENCY = 30 SECONDS,
MAX_EVENT_SIZE = 0 KB,
MEMORY_PARTITION_MODE = NONE,
TRACK_CAUSALITY = OFF,
STARTUP_STATE = ON
)
GO
availability_replica_manager_state
Возникает при изменении состояния диспетчера реплики доступности. Это событие указывает пульс для диспетчера реплики доступности. Когда диспетчер реплики доступности не находится в работоспособном состоянии, все реплики доступности в соответствующем экземпляре SQL Server будут отключены.
Сведения о событии
Столбец | Описание: |
---|---|
Имя. | availability_replica_manager_state_change |
Категория | always on |
Канал | Операционный |
Поля событий
Имя. | Type_name | Description |
---|---|---|
current_state | manager_state | Текущее состояние диспетчера реплики доступности. Миграция по сети Offline WaitingForClusterCommunication |
Определение сеанса Alwayson_health
CREATE EVENT SESSION [alwayson_health] ON SERVER
ADD EVENT availability_replica_manager_state (WHERE ([current_state] = (OFFLINE)))
ADD TARGET package0.event_file (
SET filename = N'alwayson_health.xel',
max_file_size = (5),
max_rollover_files = (4),
metadatafile = N'alwayson_health.xem'
)
WITH (
MAX_MEMORY = 4096 KB,
EVENT_RETENTION_MODE = ALLOW_SINGLE_EVENT_LOSS,
MAX_DISPATCH_LATENCY = 30 SECONDS,
MAX_EVENT_SIZE = 0 KB,
MEMORY_PARTITION_MODE = NONE,
TRACK_CAUSALITY = OFF,
STARTUP_STATE = ON
)
GO
error_reported (1480): изменение роли реплики базы данных
Это отфильтрованное событие error_reported возникает асинхронно после изменения роли реплики доступности. Оно указывает, какой базе данных доступности не удается изменить свою ожидаемую роль во время перехода на другой ресурс.
Сведения о событии
Столбец | Описание: |
---|---|
Имя. | error_reported Номер ошибки 1480: база данных "DATABASE_NAME" REPLICATION_TYPE_MSG меняет роль с "OLD_ROLE" на "NEW_ROLE" по причине REASON_MSG |
Категория | ошибки |
Канал | Административный |
Определение сеанса alwayson_health
CREATE EVENT SESSION [alwayson_health] ON SERVER
ADD EVENT sqlserver.error_reported (
WHERE (
--database replica role change message
OR [error_number] = (1480)
--database replica runtime error messages
OR [error_number] = (823)
OR [error_number] = (824)
OR [error_number] = (829)
)
) ADD TARGET package0.event_file (
SET filename = N'alwayson_health.xel',
max_file_size = (5),
max_rollover_files = (4),
metadatafile = N'alwayson_health.xem'
)
WITH (
MAX_MEMORY = 4096 KB,
EVENT_RETENTION_MODE = ALLOW_SINGLE_EVENT_LOSS,
MAX_DISPATCH_LATENCY = 30 SECONDS,
MAX_EVENT_SIZE = 0 KB,
MEMORY_PARTITION_MODE = NONE,
TRACK_CAUSALITY = OFF,
STARTUP_STATE = ON
)
GO
sqlserver.sp_server_diagnostics_component_result
Это событие служит для записи диагностических данных и сведений о работоспособности SQL Server с целью выявления потенциальных сбоев. Процедура работает в повторяющемся режиме и периодически отправляет результаты. Этот сеанс расширенного события доступен начиная с версии SQL Server 2019 CU15 (15.0.4198.2).
Сведения о событии
Имя | Описание |
---|---|
Имя. | sp_server_diagnostics_component_result |
Категория | Сервер |
Канал | Отладка |
Поля событий
Имя. | Type_name | Description |
---|---|---|
component | UInt8 | Имя компонента. |
state | UInt8 | Указывает состояние работоспособности компонента. |
. | XML | Поле XML, содержащее дополнительные сведения о компоненте. |
Определение сеанса alwayson_health
CREATE EVENT SESSION [alwayson_health] ON SERVER
ADD EVENT sqlserver.sp_server_diagnostics_component_result (SET collect_data = (1) WHERE ([state] = (3)))
ADD TARGET package0.event_file (
SET filename = N'alwayson_health.xel',
max_file_size = (5),
max_rollover_files = (4),
metadatafile = N'alwayson_health.xem'
)
WITH (
MAX_MEMORY = 4096 KB,
EVENT_RETENTION_MODE = ALLOW_SINGLE_EVENT_LOSS,
MAX_DISPATCH_LATENCY = 30 SECONDS,
MAX_EVENT_SIZE = 0 KB,
MEMORY_PARTITION_MODE = NONE,
TRACK_CAUSALITY = OFF,
STARTUP_STATE = ON
)
GO
ucs.ucs_connection_setup
Это событие создает дампы журналов, связанных с подключением или сетью между первичной и вторичной репликами. Этот сеанс расширенного события доступен начиная с версии SQL Server 2019 CU15 (15.0.4198.2).
Сведения о событии
Имя | Описание |
---|---|
Имя. | ucs_connection_setup |
Категория | Транспорт |
Канал | Отладка |
Поля событий
Имя. | Type_name | Description |
---|---|---|
setup_event | Int32 | Событие настройки подключения. |
obj_address | Указатель | Адрес конечной точки подключения. |
endpoint_type | Int32 | Тип конечной точки |
stream_status | Int32 | Состояние потока подключения. |
error_number | UInt32 | Код ошибки подключения. |
connection_id | GUID | Идентификатор подключения. |
error_message | UnicodeString | Сообщение об ошибке подключения. |
address | UnicodeString | Целевой адрес подключения. |
circuit_id | UnicodeString | Идентификатор цепи подключения. |
Определение сеанса alwayson_health
CREATE EVENT SESSION [alwayson_health] ON SERVER
ADD EVENT ucs.ucs_connection_setup
ADD TARGET package0.event_file (
SET filename = N'alwayson_health.xel',
max_file_size = (5),
max_rollover_files = (4),
metadatafile = N'alwayson_health.xem'
)
WITH (
MAX_MEMORY = 4096 KB,
EVENT_RETENTION_MODE = ALLOW_SINGLE_EVENT_LOSS,
MAX_DISPATCH_LATENCY = 30 SECONDS,
MAX_EVENT_SIZE = 0 KB,
MEMORY_PARTITION_MODE = NONE,
TRACK_CAUSALITY = OFF,
STARTUP_STATE = ON
)
GO
sqlserver.hadr_trace_message
Это событие перенаправляет выходные данные некоторых команд DBCC и журнала HADR в сеанс расширенного события (аналогично флагу трассировки 3605). Этот сеанс расширенного события доступен начиная с версии SQL Server 2019 CU15 (15.0.4198.2).
Сведения о событии
Имя | Описание |
---|---|
Имя. | hadr_trace_message |
Категория | Всегда на месте |
Канал | Отладка |
Поля событий
Имя. | Type_name | Description |
---|---|---|
hadr_message | unicode_string | Это событие перенаправляет выходные данные некоторых команд DBCC и журнала HADR в сеанс расширенного события (аналогично флагу трассировки 3605). |
Определение сеанса alwayson_health
CREATE EVENT SESSION [alwayson_health] ON SERVER
ADD EVENT sqlserver.hadr_trace_message
ADD TARGET package0.event_file (
SET filename = N'alwayson_health.xel',
max_file_size = (5),
max_rollover_files = (4),
metadatafile = N'alwayson_health.xem'
)
WITH (
MAX_MEMORY = 4096 KB,
EVENT_RETENTION_MODE = ALLOW_SINGLE_EVENT_LOSS,
MAX_DISPATCH_LATENCY = 30 SECONDS,
MAX_EVENT_SIZE = 0 KB,
MEMORY_PARTITION_MODE = NONE,
TRACK_CAUSALITY = OFF,
STARTUP_STATE = ON
)
GO