本連載は、「Microsoft SQL Server」で発生するトラブルを「どんな方法で」「どのように」解決していくか、正しい対処のためのノウハウを紹介します。今回は「トランザクションレプリケーションに由来したトランザクションログ関連トラブルの対処方法」を解説します。
本連載では、「Microsoft SQL Server(以下、SQL Server)」で発生するトラブルについて、「なぜ起こったか」の理由とともに具体的な対処方法を紹介していきます。
「Windows Server 2012 R2」上に「SQL Server 2016 RTM」をインストールした環境を想定して解説します。
sys.databasesで表示されたステータス「REPLICATION」は、「トランザクションレプリケーション(*1)」と呼ばれるデータ同期の機能でトランザクションログの再利用を阻んでいる要因があることを示しています。
トランザクションレプリケーションでは、同期に必要なレコードがトランザクションログに書き込まれると、そのトランザクションログがレプリケーション用であるとマークして識別します。「ログリーダーエージェント」がトランザクションログを読み取り、ディストリビューションデータベースに正しく格納されると配信済みとマークされます。続いて、トランザクションログのバックアップも実行されるとログの再利用が可能になります。
しかし何らかの障害や設定ミスによって、ログリーダーエージェントがトランザクションログを読み取れない場合や、ディストリビューションデータベースに正しく配信/格納されない状況の場合には、トラブル 20やトラブル 21と同じく、トランザクションログは「切り捨てない状態=使用中」のステータスとなり、ログを再利用できなくなります。
この他、トランザクションレプリケーションが構築されていない環境でトランザクションログにレプリケーション用のマークが存在していた場合にも、ログを再利用できなくなります。
「SQL Server 2016」に搭載される新たなセキュリティ対策を追う
そもそも、リレーショナルデータベースとは何か?
データの登録を行うINSERT文
複数の条件を指定してSELECT文を実行する
Oracle運用の基本「ログ」を理解しようCopyright © ITmedia, Inc. All Rights Reserved.