適用対象:SQL Server
このトピックでは、Transact-SQL を使用して SQL Server 2016 (13.x) 以降のデータベースに永続的なログ バッファーを追加および削除する方法について説明します。
アクセス許可
データベースに対する 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 ボリューム上のログ バッファー ファイルのサイズは、 ALTER DATABASE ADD LOG FILE コマンドで指定したサイズに関係なく、20 MB に設定されます。
データベースから永続ログ バッファーを削除する
永続ログ バッファーを安全に削除するには、永続ログ バッファーをドレインするために、データベースをシングル ユーザー モードにする必要があります。
永続ログ バッファーを削除すると、ディスク上のログ バッファー ファイルが削除されます。
構文は、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;
制限事項
Transparent Data Encryption (TDE) は、永続ログ バッファーと互換性がありません。
可用性グループは、プライマリ レプリカでは標準のログ書き込みセマンティクスに対するログ リーダー エージェントが必要であるため、セカンダリ レプリカでのみこの機能を使用できます。 ただし、小さなログ ファイルはすべてのノードに作成する必要があります (理想的には DAX ボリュームまたはマウント上)。 フェールオーバーが発生した場合、フェールオーバーを成功させるには、永続的なログ バッファー パスが存在する必要があります。
注意事項
可用性グループのフェールオーバー イベントまたはデータベースの起動中に永続的なログ バッファーパスまたはファイルが存在しない場合、データベースは問題が解決されるまで RECOVERY PENDING 状態になります。
その他の PMEM 機能との相互運用
永続ログ バッファーと ハイブリッド バッファー プール の両方が有効になっている場合、スタートアップ トレース フラグ 809 と共に、ハイブリッド バッファー プールは 直接書き込み モードと呼ばれるもので動作します。
バックアップおよび復元操作
通常の復元条件が適用されます。 永続ログ バッファーが DAX ボリュームまたはマウントに復元された場合は、引き続き機能します。 DAX 以外のディスク ボリュームに復元されたログは、 ALTER DATABASE REMOVE FILE コマンドを使用して安全に削除できます。