Поделиться через


Добавить буфер постоянного журнала в базу данных

Область применения:SQL Server

В этом разделе описывается, как добавить и удалить постоянный буфер журнала в базу данных в SQL Server 2016 (13.x) и выше с помощью Transact-SQL.

Разрешения

Требуется разрешение ALTER для базы данных.

Настройка устройства энергонезависимой памяти (Linux)

Настройка устройства энергонезависимой памяти в Linux.

Настройка устройства энергонезависимой памяти (Windows)

Настройка устройства энергонезависимой памяти в Windows.

Добавление постоянного буфера журнала в базу данных

Том или точка подключения для нового файла журнала должны быть отформатированы с включенным DAX (NTFS) или подключены с параметром DAX (XFS/EXT4).

Используйте следующий синтаксис, чтобы добавить постоянный буфер журнала в существующую базу данных. Синтаксис отличается в зависимости от версии SQL Server.

Добавление постоянного буфера журнала в SQL Server 2017 (14.x) и последующих версиях

ALTER DATABASE [DB] SET PERSISTENT_LOG_BUFFER = ON (DIRECTORY_NAME = 'path-to-directory-on-a-DAX-volume');

Например:

ALTER DATABASE WideWorldImporters SET PERSISTENT_LOG_BUFFER = ON (DIRECTORY_NAME = 'F:\SQLTLog');

Имя буфера сохраняемого файла журнала создается автоматически. Размер файла всегда составляет 20 мегабайт.

Добавление буфера сохраняемого журнала в SQL Server 2016 (13.x)

ALTER DATABASE [DB] ADD LOG FILE
(
NAME = [DAXlogLogicalName],
FILENAME = 'path-to-log-file-on-a-DAX-volume',
SIZE = 20 MB
);

Например:

ALTER DATABASE WideWorldImporters ADD LOG FILE
(
NAME = wwi_log2, 
FILENAME = 'F:\SQLTLog\wwi_log2.pldf',
SIZE = 20 MB
);

Файл буфера журнала в томе DAX будет иметь размер в 20 мб независимо от размера, указанного в команде ALTER DATABASE ADD LOG FILE.

Удалить постоянный буфер журнала из базы данных

Чтобы безопасно удалить постоянный буфер журнала, база данных должна размещаться в одном пользовательском режиме для очистки буфера сохраняемого журнала.

При удалении сохраняемого буфера журнала файл буфера журнала на диске удаляется.

Синтаксис отличается в зависимости от версии SQL Server.

Удаление постоянного буфера журнала в SQL Server 2017 (14.x) и новее

ALTER DATABASE [DB] SET PERSISTENT_LOG_BUFFER = OFF;

Например:

ALTER DATABASE WideWorldImporters SET PERSISTENT_LOG_BUFFER = OFF;

Удалить буфер постоянного журнала в SQL Server 2016 (13.x)

ALTER DATABASE [DB] SET SINGLE_USER;
ALTER DATABASE [DB] REMOVE FILE [DAXlogLogicalName];
ALTER DATABASE [DB] SET MULTI_USER;

Например:

ALTER DATABASE WideWorldImporters SET SINGLE_USER;
ALTER DATABASE WideWorldImporters REMOVE FILE wwi_log2;
ALTER DATABASE WideWorldImporters SET MULTI_USER;

Ограничения

Прозрачное шифрование данных (TDE) несовместимо с постоянным буфером журнала.

Группы доступности могут использовать эту функцию только на вторичных репликах из-за требования агента чтения журналов для стандартной семантики записи журналов на основном. Однако на всех узлах необходимо создать небольшой файл журнала (в идеале на томах или подключениях DAX). В случае переключения на резерв путь к буферу журнала должен существовать, чтобы переключение было успешным.

Осторожность

Если путь или файл постоянного буфера журнала отсутствует во время события отработки отказа группы доступности или запуска базы данных, база данных вводит состояние RECOVERY PENDING до устранения проблемы.

Взаимодействие с другими функциями PMEM

Если включены буфер постоянного журнала и гибридный буферный пул, а также установлен стартовый флаг трассировки 809 , гибридный буферный пул будет работать в режиме прямой записи.

Операции резервного копирования и восстановления

Применяются обычные условия восстановления. Если постоянный буфер журнала восстанавливается в томе DAX или точке монтирования, он продолжает функционировать. Если журнал восстанавливается в томе диска, отличном от DAX, его можно безопасно удалить с помощью команды ALTER DATABASE REMOVE FILE.

Следующие шаги