「REPLICATION」によってトランザクションログを再利用できなくなった(ファイル管理トラブル)SQL Serverトラブルシューティング(29)(1/2 ページ)

本連載は、「Microsoft SQL Server」で発生するトラブルを「どんな方法で」「どのように」解決していくか、正しい対処のためのノウハウを紹介します。今回は「トランザクションレプリケーションに由来したトランザクションログ関連トラブルの対処方法」を解説します。

» 2016年12月02日 05時00分 公開
[椎名武史ユニアデックス株式会社]

連載バックナンバー

 本連載では、「Microsoft SQL Server(以下、SQL Server)」で発生するトラブルについて、「なぜ起こったか」の理由とともに具体的な対処方法を紹介していきます。

トラブル 22(カテゴリー:ファイル管理):「REPLICATION」によってトランザクションログを再利用できなくなった

 「Windows Server 2012 R2」上に「SQL Server 2016 RTM」をインストールした環境を想定して解説します。

トラブルの実例:他のサーバとは連携していない環境で、当初設計の想定を超えてトランザクションログが肥大化してしまう。「sys.databases」などからトランザクションログが再利用されない原因を調べたところ、log_reuse_waitは「6」、log_reuse_wait_descは「REPLICATION」と表示された(図22-1)。

photo 図22-1 「sys.databases」を確認したところ、ログを再利用できない理由として「REPLICATION」と表示された

トラブルの原因を探る

 sys.databasesで表示されたステータス「REPLICATION」は、「トランザクションレプリケーション(*1)」と呼ばれるデータ同期の機能でトランザクションログの再利用を阻んでいる要因があることを示しています。


 トランザクションレプリケーションでは、同期に必要なレコードがトランザクションログに書き込まれると、そのトランザクションログがレプリケーション用であるとマークして識別します。「ログリーダーエージェント」がトランザクションログを読み取り、ディストリビューションデータベースに正しく格納されると配信済みとマークされます。続いて、トランザクションログのバックアップも実行されるとログの再利用が可能になります。

 しかし何らかの障害や設定ミスによって、ログリーダーエージェントがトランザクションログを読み取れない場合や、ディストリビューションデータベースに正しく配信/格納されない状況の場合には、トラブル 20トラブル 21と同じく、トランザクションログは「切り捨てない状態=使用中」のステータスとなり、ログを再利用できなくなります。

 この他、トランザクションレプリケーションが構築されていない環境でトランザクションログにレプリケーション用のマークが存在していた場合にも、ログを再利用できなくなります。

       1|2 次のページへ

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。