Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Область применения: SQL Server
База данных SQL Azure Управляемый экземпляр SQL Azure
В этой статье вы узнаете о мгновенной инициализации файлов (IFI) и о том, как ускорить рост файлов базы данных SQL Server.
По умолчанию файлы данных и журналов инициализируются, чтобы перезаписать все существующие данные на диске, оставшиеся после удаленных файлов. Файлы данных и журналов сначала инициализируются путем обнуления (заполнения нулями) при выполнении следующих операций:
- Создается база данных .
- Добавление файлов данных и журналов к существующей базе данных.
- Увеличение размера существующего файла (включая операции автоувеличения).
- Восстановление базы данных или файловой группы.
В SQL Server мгновенное инициализация файлов позволяет ускорить выполнение ранее упомянутых операций с файлами, так как оно освобождает используемое дисковое пространство без заполнения этого пространства нулями. Вместо этого старое содержимое диска перезаписывается, так как новые данные записываются в файлы.
В Базе данных SQL Azure и в Управляемом экземпляре SQL Azure мгновенная инициализация файлов доступна только для файлов журнала транзакций.
Мгновенное инициализация файлов и журнал транзакций
Область применения: SQL Server 2022 (16.x) и более поздних версий, а также База данных SQL Azure и Управляемый экземпляр SQL Azure.
Исторически файлы журнала транзакций не могут быть инициализированы мгновенно. Начиная с SQL Server 2022 (16.x) (все выпуски), а также в Базе данных SQL Azure и Управляемом экземпляре SQL Azure события автоматического увеличения журнала транзакций размером до 64 МБ могут использовать преимущества мгновенной инициализации файлов. Размер автоматического увеличения по умолчанию для новых баз данных составляет 64 МБ. При автоматическом увеличении файла журнала транзакций более чем на 64 МБ невозможно воспользоваться мгновенной инициализацией файлов.
В отличие от мгновенной инициализации файлов данных, которая предотвращается, если включен прозрачное шифрование данных (TDE), мгновенное инициализация файлов допускается для роста журнала транзакций в базах данных, включающих TDE, из-за того, как растет файл журнала транзакций, и тот факт, что журнал транзакций записывается в последовательный способ.
Мгновенная инициализация файлов используется для уровней "Общего назначения" и "Критически важного для бизнеса" База данных SQL Azure и Управляемый экземпляр SQL Azure, только для ускорения увеличения файлов журнала транзакций.
Мгновенная инициализация файлов не может быть настроена в Базе данных SQL Azure и Управляемом экземпляре SQL Azure.
Включить мгновенную инициализацию файлов
Мгновенная инициализация файлов данных доступна только в том случае, если учетная запись службы или идентификатор безопасности службы ядра СУБД предоставлена привилегия SE_MANAGE_VOLUME_NAME. Члены группы администраторов Windows имеют это право и могут предоставить его другим пользователям, добавив их в политику безопасности выполнения задач по обслуживанию томов. Привилегия SE_MANAGE_VOLUME_NAME не требуется для мгновенной инициализации файлов при событиях роста с максимальным размером до 64 МБ в журнале транзакций, введенном в выпуске SQL Server 2022 (16.x).
Рекомендуется предоставить привилегию SE_MANAGE_VOLUME_NAMEидентификатору безопасности службы службы службы ядра СУБД. Это гарантирует, что грант остается даже при изменении учетной записи службы ядра СУБД. Дополнительные сведения см. в разделе "Использование идентификаторов безопасности службы" для предоставления разрешений службам в SQL Server.
Внимание
Некоторые функции, такие как прозрачное шифрование данных (TDE), могут препятствовать мгновенной инициализации файлов (IFI). В SQL Server 2022 (16.x) и более поздних версиях, а также в Базе данных SQL Azure и Управляемом экземпляре SQL Azure, IFI разрешено в журнале транзакций. Дополнительные сведения см. в разделе "Мгновенное инициализация файлов" и журнал транзакций.
В SQL Server 2016 (13.x) и более поздних версиях это разрешение можно предоставить идентификатору безопасности службы СУБД во время установки.
Если вы используете установку из командной строки, добавьте аргумент /SQLSVCINSTANTFILEINIT или установите флажок Предоставить право "Выполнение задач по обслуживанию томов" службе ядра СУБД SQL Server в мастере установки.
Чтобы предоставить учетной записи или SID службы политику безопасности Perform volume maintenance tasks:
На компьютере, на котором будут созданы файлы данных, откройте приложение локальной политики безопасности (
secpol.msc).В левой области разверните локальные политики и выберите назначение прав пользователя.
На правой панели дважды щелкните Выполнение задач по обслуживанию томов.
Выберите "Добавить пользователя или группу" и добавьте учетную запись службы ядра СУБД или ее идентификатор службы.
Нажмите кнопку "Применить", а затем закройте все диалоговые окна "Локальная политика безопасности".
Перезапустите службу ядра СУБД.
Проверьте журнал ошибок ядра СУБД при запуске.
Область применения: SQL Server (начиная с SQL Server 2012 (11.x) с пакетом обновления 4 (SP4), SQL Server 2014 (12.x) с пакетом обновления 2 (SP2) и SQL Server 2016 (13.x) и более поздних версий.
Если учетной записи службы ядра СУБД или его идентификатору безопасности службы предоставлена
SE_MANAGE_VOLUME_NAMEпривилегия, информационное сообщение, похожее на следующий пример, регистрируется:Database Instant File Initialization: enabled. For security and performance considerations see the topic 'Database Instant File Initialization' in SQL Server Books Online. This is an informational message only. No user action is required.Если учетная запись службы ядра СУБД или ее идентификатор безопасности службы не был предоставлен
SE_MANAGE_VOLUME_NAME, регистрируется информационное сообщение, похожее на следующий пример:Database Instant File Initialization: disabled. For security and performance considerations see the topic 'Database Instant File Initialization' in SQL Server Books Online. This is an informational message only. No user action is required.
Примечание.
В SQL Server используйте значение
instant_file_initialization_enabledв динамическом представлении управления sys.dm_server_services , чтобы определить, включена ли мгновенное инициализация файлов для вашего экземпляра.
Вопросы безопасности
Мы советуем включить мгновенную инициализацию файлов, так как преимущества перевешивают риски безопасности.
При использовании мгновенной инициализации файлов удаленный диск перезаписывается только при записи новых данных в файлы. По этой причине удаленный контент потенциально доступен неавторизованным субъектом, пока некоторые другие данные не записываются в определенную область файла данных.
Когда файл базы данных присоединен к экземпляру SQL Server, риск разглашения информации снижается благодаря дискреционному списку управления доступом (DACL) для файла. DACL разрешает доступ только к учетной записи службы SQL Server, идентификатору безопасности службы и локальному администратору. Однако при отключении файла он потенциально доступен пользователем или службой, у которых нет привилегий SE_MANAGE_VOLUME_NAME .
Аналогичные соображения существуют в следующих случаях.
Создается резервная копия базы данных. Если файл резервной копии не защищен соответствующим DACL, удаленный контент может стать доступным для несанкционированного пользователя или службы.
Файл расширяется с помощью IFI. Администратор SQL Server потенциально может получить доступ к содержимому необработанных страниц и просматривать ранее удаленное содержимое.
Файлы базы данных размещаются в сети хранения. Также возможно, что сеть хранения данных (SAN) всегда предоставляет новые страницы как уже предварительно инициализированные, и повторная инициализация этих страниц операционной системой может создавать ненужные накладные расходы.
Если вероятность раскрытия удаленного содержимого является серьезной проблемой, необходимо выполнить одно следующее действие или оба.
Всегда проверяйте, что все отсоединенные файлы данных и резервные копии имеют ограничивающие DACL.
Отключите мгновенную инициализацию файлов для экземпляра SQL Server. Для этого отмените доступ
SE_MANAGE_VOLUME_NAMEи учетной записи службы ядро СУБД и идентификатор безопасности его службы.Примечание.
Отключение IFI увеличивает время роста файлов данных и влияет только на файлы, созданные или увеличенные после отзыва привилегии.
привилегия SE_MANAGE_VOLUME_NAME
Привилегию SE_MANAGE_VOLUME_NAME можно назначить в Административных средствах Windows, в апплете Локальная политика безопасности. В разделе Локальные политики выберите Назначение прав пользователя и измените свойство Выполнение задач по обслуживанию томов.
Рекомендации по производительности
Процесс инициализации файла базы данных записывает нули в новые области файла во время инициализации. Длительность этого процесса зависит от размера инициализированной части файла и времени отклика и емкости системы хранения. Если инициализация занимает много времени, могут появиться следующие сообщения, записанные в журнале ошибок SQL Server и журнале приложений.
Msg 5144
Autogrow of file '%.*ls' in database '%.*ls' was cancelled by user or timed out after %d milliseconds. Use ALTER DATABASE to set a smaller FILEGROWTH value for this file or to explicitly set a new file size.
Msg 5145
Autogrow of file '%.*ls' in database '%.*ls' took %d milliseconds. Consider using ALTER DATABASE to set a smaller FILEGROWTH for this file.
Длительное автоматическое увеличение файла базы данных и /или файла журнала транзакций может привести к проблемам с производительностью запросов. Операция, требующая автоматического увеличения размера файла, удерживает такие ресурсы, как блокировки или защёлки, в течение всей операции увеличения файла. Вы можете увидеть длительные ожидания на блокировках страниц выделения. Операция, требующая длительного автоувеличения, имеет тип ожидания PREEMPTIVE_OS_WRITEFILEGATHER.