MSSQLSERVER_35267
Область применения: SQL Server
Сведения
Атрибут | Значение |
---|---|
Название продукта | SQL Server |
ИД события | 35267 |
Источник событий | MSSQLSERVER |
Компонент | SQLEngine |
Символическое имя | HADR_DISCONNECTED_DB |
Текст сообщения | Подключение групп доступности AlwaysOn к базе данных %S_MSG завершено для базы данных %S_MSG "%.*ls" в реплике доступности "%.*ls" с идентификатором реплики: {%.8x-%.4x-%.4x-%.2x-%.2x%.2x%.2x%.2x%.2x%.2x%.2x}. Это информационное сообщение. Вмешательство пользователя не требуется. |
Описание
Это сообщение возникает, когда реплика группы доступности теряет подключение к удаленным репликам в конечной точке зеркального отображения базы данных. Ниже приведены примеры того, как можно увидеть эту ошибку:
Always On Availability Groups connection with secondary database terminated for primary database 'ContosoDb' on the availability replica 'PRODSQL' with Replica ID: {xxxxxxxx-xxxx-xxxx-xxxxx-xxxxxxxxxxxx}. This is an informational message only. No user action is required.
Always On Availability Groups connection with primary database terminated for secondary database 'ContosoDb' on the availability replica 'PRODSQL' with Replica ID: {xxxxxxxx-xxxx-xxxx-xxxxx-xxxxxxxxxxxx}. This is an informational message only. No user action is required.
Как видно, ошибка может появиться на первичной реплике, указывающей, что она потеряла связь с вторичной репликой или наоборот.
Ошибка 35267 обычно прерывиста и может решить сам момент, когда основная причина решает себя. Например, периодически возникающая проблема с сетью может устраниться, и подключение может повторно установиться.
Во многих случаях удаленный узел, к которому локальный узел пытается подключиться, может даже не знать о сбое подключения. Таким образом, эта ошибка может возникать только в одной из реплик, а не на обоих.
Ошибка 35267 иногда может возникать вместе с ошибкой 35206, которая возникает, когда значительный период истек без успешного подключения (например, более 10 секунд).
A connection timeout has occurred on a previously established connection to availability replica 'PRODSQL' with id [xxxxxxxx-xxxx-xxxx-xxxxx-xxxxxxxxxxxx]. Either a networking or a firewall issue exists or the availability replica has transitioned to the resolving role.
Always On Availability Groups connection with primary database terminated for secondary database 'ContosoHRDb' on the availability replica 'PRODSQL' with Replica ID: {xxxxxxxx-xxxx-xxxx-xxxxx-xxxxxxxxxxxx}. This is an informational message only. No user action is required.
Always On Availability Groups connection with primary database terminated for secondary database 'ContosoFinDb' on the availability replica 'PRODSQL' with Replica ID: {xxxxxxxx-xxxx-xxxx-xxxxx-xxxxxxxxxxxx}. This is an informational message only. No user action is required.
Always On Availability Groups connection with primary database terminated for secondary database 'ContosoMktngDb' on the availability replica 'PRODSQL' with Replica ID: {xxxxxxxx-xxxx-xxxx-xxxxx-xxxxxxxxxxxx}. This is an informational message only. No user action is required.
Завершение подключения группы доступности с удаленной репликой может привести к различным проблемам локальной реплики. Например, если группа доступности использует режим SYNCHRONOUS и подключение потеряно, локальная реплика может в конечном итоге ожидать подтверждения от удаленного. В результате журнал транзакций не усечен, а журнал транзакций истекает пробела (ошибка MSSQLSERVER_9002), а затем становится недоступным (ошибка MSSQLSERVER_9001). Ниже приведен пример группы ошибок, в которых это произошло. Причина полного заполнения журнала транзакций — "AVAILABILITY_REPLICA", что означает, что эта реплика ожидает удаленного, чтобы подтвердить, что она применяет записи журнала.
Error: 9002, Severity: 17, State: 9.
The transaction log for database 'ContosoAnalyticsDb' is full due to 'AVAILABILITY_REPLICA'.
Error: 3314, Severity: 21, State: 3.
During undoing of a logged operation in database 'ContosoAnalyticsDb' (page (1:32573799) if any), an error occurred at log record ID (7672713:36228:159). Typically, the specific failure is logged previously as an error in the operating system error log. Restore the database or file from a backup, or repair the database.
State information for database 'ContosoAnalyticsDb' - Hardened Lsn: '(7672713:38265:1)' Commit LSN: '(7672712:1683087:46)' Commit Time: 'JuN 10 2022 5:51AM'
Always On Availability Groups connection with secondary database terminated for primary database 'ContosoAnalyticsDb' on the availability replica 'SQL2019DB' with Replica ID: {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}. This is an informational message only. No user action is required.
Database ContosoAnalyticsDb was shutdown due to error 3314 in routine 'XdesRMReadWrite::RollbackToLsn'. Restart for non-snapshot databases will be attempted after all connections to the database are aborted.
Error during rollback. shutting down database (location: 1).
Error: 9001, Severity: 21, State: 5.
The log for database 'ContosoAnalyticsDb' is not available. Check the operating system error log for related error messages. Resolve any errors and restart the database.
Recovery of database 'ContosoAnalyticsDb' (6) is 0% complete (approximately 60177 seconds remain). Phase 2 of 3. This is an informational message only. No user action is required.
Причина
- Проблемы с сетевым подключением могут существовать между основными и вторичными репликами.
- Проблемы с SQL Server или ОС на первичных или вторичных репликах, из-за чего потоки не могут выполняться. Примеры:
- Проблемы планировщика ОС SQL (неозначение или взаимоблокировка планировщиков)
- Низкая память на компьютере, что приводит к обрезке рабочего набора всех процессов в системе, включая SQL Server
- Проблемы с операционной системой, приводящие к остановке реагирования процессов
- Медленные проблемы ввода-вывода, которые вызывают временные ожидания на первичной или вторичной реплике
Действие пользователя
Приведенные ниже сведения описывают более распространенные сценарии, но не является исчерпывающим списком действий по устранению неполадок. Конкретные причины возникновения этой проблемы могут включать длинный список возможностей.
Проблемы с подключением
Чтобы проверить наличие проблем с подключением из SQL Server, в котором ошибка возникает на удаленном сервере SQL Server, можно выполнить следующие действия.
Шаг 1. Убедитесь, что конечная точка удаленного SQL Server активна
Чтобы обнаружить конечную точку, выполните следующий запрос.
SELECT
tep.name as EndPointName,
sp.name As CreatedBy,
tep.type_desc,
tep.state_desc,
tep.port
FROM
sys.tcp_endpoints tep
INNER JOIN sys.server_principals sp ON tep.principal_id = sp.principal_id
WHERE tep.type = 4
Шаг 2. Проверка подключения к удаленной конечной точке
Используйте Test-NetConnection для проверки подключения. Если конечная точка прослушивает и подключение успешно, найдите TcpTestSucceeded : True
. Замените serverName или IP_Address удаленным SQL Server и номером порта конечной точкой зеркального отображения базы данных.
Test-NetConnection -ComputerName <ServerName> -Port <port_number>
Test-NetConnection -ComputerName <IP_address> -Port <port_number>
Шаг 3. Сбор данных трассировки сети
Периодические ошибки сети часто трудно отслеживать, если не фиксируется трассировка сети, в которой отображаются сбросы сети (удаленные пакеты) или аналогичные проблемы. Дополнительные сведения см. в разделе 0300 Периодические или периодические проблемы с сетью
Проблемы планировщика SQL Server
Если рабочие потоки SQL Server выполняются с проблемами планировщика по различным причинам, потоки, входящие запросы службы, могут временно перестать отвечать на проблемы планировщика.
Шаг 4. Проверка проблем планировщика в SQL Server
Типичная проблема планировщика, не возвращающаяся, записывается в журнал ошибок SQL Server через 70 секунд состояния, не возвращающегося. Однако SQL Server проверяет состояние планировщиков чаще, чем это, и сообщает об этих промежуточных состояниях, не возвращающих значения в расширенных событиях. Если вы обнаруживаете проблемы планировщика на удаленном узле, соответствующее времени ошибки 35267, сосредоточьтесь на разрешении этих проблем. Вот как можно проверить кратковременные случаи возникновения проблем планировщика, которые не достигают порогового значения 70-секундного, но происходят в течение 10 или 20 секунд.
Использование файла расширенных событий работоспособности системы
- Найдите файл расширенных событий работоспособности системы с момента события.
- Дважды щелкните
system_health_0_xxxxxxxxxxxxxxxxxx.xel
его, чтобы открыть его в СРЕДЕ SQL Server Management Studio (SSMS). Кроме того, можно использоватьsys.fn_xe_file_target_read_file
для просмотра или импорта файла в виде таблицы для упрощения фильтрации. - Найдите любые вхождения события scheduler_monitor_non_yielding_ring_buffer_recorded . При обнаружении каких-либо событий планировщика SQL Server обнаруживает события планировщика и записывает их. Эти события записываются раньше, чем фактические дампы памяти планировщика и записи журнала ошибок, которые происходят после 60-70 секунд неоднократного состояния. Другими словами, вы можете использовать scheduler_monitor_non_yielding_ring_buffer_recorded для обнаружения краткосрочных проблем планировщика, которые не регистрируются в журнале ошибок, но по-прежнему произошли. Это может быть причиной периодических или кратковременных недостатков подключения между узлами группы доступности.
Использование журнала диагностики
Найдите журнал диагностики в каталоге \Log с момента события (применимо к системам кластера Windows). Формат имени файла выглядит следующим
SERVERNAME_MSSQLSERVER_SQLDIAG_x_xxxxxxxxxxxxxxxxxx.xel
образом.Дважды щелкните файл в SQL Server Management Studio (SSMS). Кроме того, можно использовать
sys.fn_xe_file_target_read_file
для просмотра или импорта файла в виде таблицы для упрощения фильтрации.После открытия в SSMS найдите экземпляр события component_health_result и щелкните правой кнопкой мыши следующее и выберите "Показать столбец в таблице: компонент", state_desc
Затем щелкните правой кнопкой мыши каждый столбец и выберите "Фильтр по этому значению ", чтобы применить следующие фильтры:
- событие component_health_result, которое должно быть единственным отображаемым
- поле компонента ='обработка запросов'
- <> state_desc "чистый".
Затем дважды щелкните столбец данных , чтобы открыть XML-данные и посмотреть
trackingNonYieldingScheduler
значение в первой строке.Если значение отличается от
0x0
этого означает, что SQL Server обнаружил ранние признаки недавного планировщика и сообщить ему здесь.Ниже приведен пример, в котором SQL Server обнаружило условие без получения с адресом планировщика "0x4fedb840040":
<queryProcessing maxWorkers="9600" workersCreated="2574" workersIdle="1883" tasksCompletedWithinInterval="175591" pendingTasks="3" ... trackingNonYieldingScheduler="0x4fedb840040">
Низкая память операционной системы
На уровне операционной системы (ОС) могут возникнуть различные проблемы, которые вызывают такой периодический недостаток ответа. Обычно это низкая память. На удаленном узле группы доступности, где возникает подозрительная проблема, выполните следующие действия.
Шаг 5. Проверка проблем с памятью ОС, которые приводят к разбиению памяти SQL Server на диск
Проверьте журнал событий системы Windows для любых ошибок, указывающих на низкую физическую или виртуальную память.
Проверьте наличие ошибки 17890 в журнале ошибок SQL Server или в журнале событий приложения Windows, чтобы узнать, приводит ли низкая память на компьютере к обрезке рабочего набора всех процессов в системе, включая SQL Server. Ошибка выглядит следующим образом:
A significant part of SQL Server process memory has been paged out. This may result in a performance degradation. Duration: 0 seconds. Working set (KB): 3383250, committed (KB): 9112480, memory utilization: 37%.
Подробные действия по настройке t-съемки см. в MSSQLSERVER_17890
Шаг 6. Правильная настройка максимальной памяти сервера и блокировки страниц в памяти
- Настройте максимальный объем памяти SQL Server в значение, позволяющее ос и другим процессам использовать память. Рекомендуемое значение для установки максимальной памяти сервера SQL Server не более 75 % размера ОЗУ в системе. Дополнительные сведения см. в разделе "Параметры конфигурации памяти сервера"
- Включите страницы блокировки в памяти (Windows), чтобы предотвратить массовое разбиение на страницы кэша буфера SQL Server.
Медленный ввод-вывод диска
В некоторых случаях чрезмерно медленный ввод-вывод может привести к временному прекращению реагирования потоков SQL Server, что может привести к отключению другой реплики группы доступности.
Шаг 7. Устранение проблем с медленным вводом-выводом
Если возникают ошибки, указывающие на медленные операции ввода-вывода, устраните основные причины медленного ввода-вывода.
SQL Server has encountered 2 occurrence(s) of I/O requests taking longer than 15 seconds to complete on file [F:\TLOG\ContosoDb.ldf] in database id 9. The OS file handle is 0x00000000000003BC. The offset of the latest long I/O is: 0x0000003d26f600
SQL Server has encountered 2 occurrence(s) of I/O requests taking longer than 15 seconds to complete on file [F:\DATA\t38data\ContosoDb2.mdf] in database id 7. The OS file handle is 0x000000000000118C. The offset of the latest long I/O is: 0x00000000012000
SQL Server has encountered 1 occurrence(s) of I/O requests taking longer than 15 seconds to complete on file [F:\DATA\t38data\ContosoDb.mdf] in database id 9. The OS file handle is 0x000000000000134C. The offset of the latest long I/O is: 0x00000000012000
Always On Availability Groups connection with primary database terminated for secondary database 'ContosoDb2' on the availability replica 'SQLNODE1\INSTANCE19' with Replica ID: {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}. This is an informational message only. No user action is required.
Always On Availability Groups connection with primary database terminated for secondary database 'ContosoDb' on the availability replica 'SQLNODE1\INSTANCE19' with Replica ID: {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}. This is an informational message only. No user action is required.
- Обновите все драйверы устройств и встроенное ПО или выполните другие диагностика, связанные с подсистемой ввода-вывода.
- Доступ к диску можно замедлить с помощью драйверов фильтров, например антивирусной программы. Чтобы увеличить скорость доступа, исключите файлы данных SQL Server из активных проверок вирусов.
- Работайте с поставщиком оборудования и системным администратором, чтобы диагностировать и устранить причину медленного ввода-вывода
Подробные инструкции см. в статье "Устранение неполадок с низкой производительностью SQL Server, вызванной проблемами ввода-вывода и MSSQLSERVER_833".