Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Область применения:SQL Server
Физические, операционные системы или проблемы SQL Server могут привести к сбою в сеансе зеркального отображения базы данных. Зеркальное отображение базы данных не выполняет регулярную проверку компонентов, от которых зависит Sqlservr.exe, чтобы определить, правильно ли они функционируют или произошел ли их отказ. Однако при сбоях некоторых типов затронутый компонент сообщает приложению Sqlservr.exe об ошибке. Ошибка, о которой сообщил другой компонент, называется постоянной ошибкой. Чтобы обнаружить другие сбои, которые в противном случае могли быть не замечены, для зеркального отображения базы данных реализован собственный механизм ожидания. По истечении времени ожидания для зеркального отображения базы данных предполагается, что произошел сбой и объявляется кратковременная ошибка. Однако некоторые сбои, происходящие на уровне экземпляра SQL Server, не приводят к истечению времени ожидания при зеркальном отображении и могут оставаться незамеченными.
Внимание
Ошибки баз данных, кроме ошибок в зеркальной базе данных, невозможно выявить в сеансе зеркального отображения базы данных. Более того, весьма проблематично будет обнаружить сбой диска данных, если только база данных не перезапускается вследствие такого сбоя.
Скорость обнаружения ошибки и, следовательно, время реакции сеанса зеркального отображения на сбой зависят от того, является ли ошибка жёсткой или мягкой. Отчеты о некоторых постоянных ошибках, таких как сбои в сети, отправляются немедленно. Однако в некоторых случаях тайм-ауты, заданные для конкретных компонентов, могут задерживать сообщение о некоторых критических ошибках. Для мягких ошибок длительность периода тайм-аута зеркалирования определяет скорость обнаружения ошибок. По умолчанию, это период равен 10 секундам. Это минимальное рекомендуемое значение.
Сбои из-за постоянных ошибок
Постоянные ошибки могут быть вызваны следующими причинами (но не ограничиваются ими):
физический разрыв соединения или кабеля;
неисправная сетевая плата;
изменение настроек маршрутизатора;
изменения в конфигурации брандмауэра;
изменения в конфигурации конечной точки;
выход из строя накопителя, на котором находятся журналы транзакций;
сбой операционной системы или процесса.
Например, когда диск журнала транзакций на первичной базе данных перестает отвечать и выходит из строя, операционная система сообщает Sqlservr.exe о том, что произошла серьезная ошибка.
Некоторые компоненты, например сетевые компоненты и ряд подсистем ввода-вывода, имеют собственные интервалы ожидания, предназначенные для выявления отказов. Такие тайм-ауты не зависят от зеркалирования базы данных, которое ничего о них не знает и совершенно не учитывает их поведение. В этих случаях тайм-аут увеличивает время между сбоем и моментом, когда механизм зеркального отображения базы данных получает возникающую в результате неустранимую ошибку.
Примечание.
Активная проверка ошибок при зеркальном отображении базы данных выполняется только в случаях некритических ошибок. Дополнительные сведения см. в подразделе «Сбои из-за кратковременных ошибок» далее в этом разделе.
Чтобы помочь интерпретировать условия возникновения ошибок в сети, спросите у инженера сети, какие сообщения об ошибках отправляются на порт перед возникновением следующих событий в соединении TCP.
DNS не работает.
Кабели отсоединены.
В Microsoft Windows есть брандмауэр, который блокирует определенный порт.
Ошибка приложения, наблюдающего за портом.
Сервер под управлением Windows переименован.
Сервер под управлением Windows перезагружается.
Примечание.
Зеркальное отображение не защищает от проблем, связанных с доступом клиентов к серверу. Например, рассмотрим случай, когда общедоступный сетевой адаптер обрабатывает подключения клиентов к основному экземпляру сервера, а адаптер частной сети — весь трафик зеркалирования между экземплярами сервера. В этом случае отказ адаптера общедоступной сети не позволит клиентам получить доступ к базе данных, хотя зеркалирование базы данных продолжится.
Сбои из-за кратковременных ошибок
Условия, приводящие к превышению времени ожидания при зеркальном отображении, могут быть вызваны следующими причинами (но не ограничиваются ими).
Сетевые ошибки (истечение времени ожидания канала связи TCP, пропущенные или искаженные пакеты, поступление пакетов в неверном порядке).
Операционная система, сервер или база данных не отвечает на запросы.
Тайм-аут сервера Windows.
Нехватка вычислительных ресурсов (например, из-за перегрузки ЦП или диска, переполнения журнала транзакций, переполнения памяти или превышения числа потоков). В таких случаях необходимо увеличить время ожидания, снизить рабочую нагрузку или сменить оборудование, чтобы оно соответствовало задачам, выполняемым системой.
Механизм ожидания при зеркальном отображении
Поскольку экземпляр сервера не может напрямую обнаруживать мягкие ошибки, такая ошибка потенциально может привести к тому, что экземпляр сервера будет ожидать бесконечно. Для предотвращения такого поведения в сеансе зеркального отображения базы данных используется механизм ожидания, основанный на том, что каждый экземпляр сервера, участвующий в сеансе, через заданный промежуток времени посылает сообщение PING по всем открытым соединениям.
Чтобы поддерживать соединение открытым, экземпляр сервера должен получить пинг по этому соединению в течение периода времени, определенного тайм-аутом, а также времени, необходимого для отправки еще одного пинга. Получение сообщения PING до истечения интервала ожидания указывает на то, что соединение все еще открыто, и что экземпляры сервера поддерживают связь по нему. При получении сообщения PING экземпляр сервера сбрасывает таймер ожидания для этого соединения.
Если в течение периода ожидания по соединению не получен пинг, экземпляр сервера считает, что для этого соединения истекло время ожидания. Экземпляр сервера закрывает соединение, для которого истекло время ожидания, и обрабатывает событие тайм-аута в соответствии с состоянием и режимом работы сеанса.
Истечение времени ожидания будет считаться сбоем даже в том случае, если фактически другой сервер работает нормально. Если время ожидания для сеанса установлено слишком коротким и не позволяет поддерживать нормальное реагирование какого-либо из участников, возникают ложные сбои. Ложный сбой происходит, когда один экземпляр сервера успешно связывается с другим, но время отклика последнего настолько велико, что его ping-запросы не поступают до истечения периода ожидания.
В сеансах высокопроизводительного режима тайм-аут всегда равен 10 секундам. Обычно этого достаточно для избегания ложных сбоев. В сеансах режима высокой безопасности установленный по умолчанию тайм-аут равен 10 секундам, но его длительность можно изменить. Во избежание ложных сбоев рекомендуется, чтобы тайм-аут зеркалирования всегда составлял не менее 10 секунд.
Изменение величины тайм-аута (только в режиме высокой безопасности)
- Используйте инструкцию ALTER DATABASE<database>SET PARTNER TIMEOUT <integer>.
Просмотр текущего значения времени ожидания
- Запросите mirroring_connection_timeout из sys.database_mirroring.
Реакция на ошибку
Независимо от типа ошибки, экземпляр сервера, который обнаружил ее, реагирует в соответствии со своей ролью, режимом работы сеанса и состоянием других соединений того же сеанса. Сведения о том, что происходит при потере участника, см. в разделе Database Mirroring Operating Modes.
См. также
Оценка прерывания работы службы во время переключения ролей (зеркальное отображение базы данных)
Режимы работы зеркального отображения базы данных
Переключение ролей во время сеанса зеркального отображения базы данных (SQL Server)
Зеркальное отображение базы данных (SQL Server)