После применения этого исправления необходимо включить флаг трассировки 1800 в качестве параметра запуска на всех серверах или репликах с размером 512-байтового физического сектора и перезапустить их, чтобы это исправление работало правильно.
Проблемы
Рассмотрим следующий сценарий.
-
Вы включаете функции групп доступности AlwaysOn или logshipping в Microsoft SQL Server.
-
Диски, на которых хранятся файлы журналов основного и дополнительного реплика в группе доступности AlwaysOn (AG), имеют разные размеры секторов. Или в средах Logshipping диски, на которых хранятся файлы журнала для первичных серверов Logshipping и дополнительных серверов Logshipping, имеют разные размеры секторов. Пример:
-
Основной файл журнала реплика находится на диске с размером сектора 512 байт. Однако дополнительный файл журнала реплика находится на диске с размером сектора 4 КБ.
-
Основной файл журнала реплика расположен в локальной локальной системе с размером сектора 512 байт. Однако вторичная реплика находится на диске службы хранилища Windows Azure с размером сектора 4 КБ.
-
В этом сценарии в журнал ошибок SQL Server регистрируется следующее сообщение об ошибке. Сообщение об ошибке может продолжаться некоторое время после перезапуска, если были журналы, которые не были применены к вторичной службе до перезапуска сервера.
Были несогласованные операции ввода-вывода журналов X, для которых требовалось вернуться к синхронному вводу-выводу. Текущий операции ввода-вывода находится в файле ....
Кроме того, синхронизация группы доступности или logshipping выполняется очень медленно из-за синхронного ввода-вывода. Если вторичная реплика находится в службе хранилища Windows Azure, завершение процесса синхронизации занимает гораздо больше времени, чем ожидалось.
Примечание. Эта проблема возникает при использовании как новых дисков с размером сектора 4 КБ, так и старых дисков с размером сектора 512 байт. Дополнительные сведения о новых дисках см. в разделе SQL Server. Новые диски используют размер сектора 4K и SQL Server—Дисковые пространства/VHDx и размер сектора 4K.
Решение
Эта проблема была исправлена в следующем накопительном обновлении SQL Server.
Накопительный пакет обновления 5 для SQL Server 2014 /en-us/help/3011055
Накопительный пакет обновления 3 для SQL Server 2012 с пакетом обновления 2 (SP2) /help/3002049
Накопительный пакет обновления 13 для SQL Server 2012 с пакетом обновления 1 (SP1) /ru-ru/help/3002044
После применения исправления и включения флага трассировки 1800 в качестве параметра запуска на всех репликах серверов, работающих на диске с размером сектора 512 байт, вы заметите небольшое увеличение размера следующих файлов:
-
Файл журнала транзакций
-
Резервные копии журналов
Кроме того, вы заметили, что в журнале ошибок SQL Server основного сервера регистрируются следующие сообщения:
Хвост журнала для базы данных "<имя базы данных>" переписывается в соответствии с новым размером сектора, равным 4096 байтам.
Это информационное сообщение, которое можно спокойно игнорировать.
Каждое новое накопительное обновление для SQL Server содержит все исправления и все исправления для системы безопасности, которые были включены в предыдущее накопительное обновление. Ознакомьтесь с последними накопительными обновлениями для SQL Server:
Обходное решение
Чтобы обойти эту проблему, переместите файл журнала транзакций в месте назначения на диск с байтами на физический сектор , равным 512 байтам.
Статус
Корпорация Майкрософт подтверждает наличие этой проблемы в своих продуктах, которые перечислены в разделе "Применяется к".
Дополнительная информация
Рекомендуется убедиться, что все диски на всех репликах (по крайней мере все диски, на которых размещены файлы журнала) имеют одинаковый размер сектора. В смешанных средах, где вторичный сектор имеет физический сектор 512 байт, а основной — 4 КБ, TF 1800 следует использовать в качестве флага запуска на всех серверах или репликах с размером 512-байтового физического сектора и перезапуска. Это гарантирует, что в текущем формате создания журнала используется размер сектора размером 4 КБ.
Дополнительные сведения о том, как SQL Server работает с большими размерами секторов, см. в следующей записи блога о поддержке:
SQL Server–Дисковых пространств/VHDx и размер
сектора 4K
Вы можете использовать служебную программу командной строки Fsutil, чтобы определить значение байтов на физический сектор. Если этот параметр не отображается в выходных данных, необходимо применить исправление, указанное в статье базы знаний 982018.
Чтобы проверить тип диска, выполните следующие действия.
-
Выполните следующую команду в командной строке с повышенными привилегиями:
Fsutil fsinfo ntfsinfo x: Примечание. Заполнитель x представляет проверяющий диск.
-
Используйте значения байт на сектор и байт на физический сектор , чтобы определить тип диска. Для этого используйте следующую таблицу:
Значение "Байт на сектор"
Значение "Байт на физический сектор"
Тип диска
4096
4096
4K native
512
4096
Расширенный формат (также известный как 512E)
512
512
512-байтовый собственный код