【SQL Server】トランザクションログを消す(クリア)する方法

SQL Serverのトランザクションログ

SQL Serverのトランザクションログとは

SQL Serverのトランザクションログは、拡張子「LDF」のファイルで、データの更新履歴を保持するファイルです。

トランザクションログは、「○○テーブルの××データがいつ更新された」という更新履歴情報をすべて保持しています。

SQL Serverのデータファイルとログファイル

トランザクションログは復旧に必要

SQL Serverのファイルは2種類あります。

  • データファイル
  • ログファイル

「データファイル」と「ログファイル」です。「データファイル」はデータ本体のファイルですが、データを更新してもすぐにデータファイルに書き込まれるわけではないのです。普段はメモリ上に更新データをもっていますから。

なので、「データファイル」への書き込み前に障害が発生すると、復旧できなくなります。これは困った事態です。こんなときに「トランザクションログ」を使うのです。

「トランザクションログ」は「すべての更新履歴」があるため、トランザクションログを適用すれば、データベースの復旧が可能になるのです。

トランザクションログは増え続ける

しかしこの「トランザクションログ」、更新履歴がどんどん書き込まれるため放っておくとどんどんサイズが増え続けます。

いくらログでもそのままにしておくと容量を圧迫しかねません。Oracleのアーカイブログ同様、消えることがないため消す必要があります。

トランザクションログを消す(クリア)する方法

「トランザクションログ」を消すにはログをバックアップします。

正確にいうと、消すわけではなく、バックアップした部分をクリアするイメージです。クリアしたところへ新規のログが書き込まれるので、容量的には増えないという仕組みです。

1.SQL Server Management Studiioを起動します。バックアップをとるデータベースで右クリックをして「タスク」→「バックアップ」をクリックします。

2.データベースのバックアップで「バックアップの種類」を「トランザクションログ」とします。「名前」をつけ、「バックアップ先」をディスクにし、OKボタンをおしてバックアップが完了します。

これでトランザクションログがバックアップされました。と同時に、ログがクリアされ、この領域を使用することできるようになりました。

このようにトランザクションログは増え続けてしまうので、定期的にバックアップをとって領域をクリアしておく運用が必要となります。

参照:トランザクション ログのバックアップ (SQL Server) | Microsoft Docs

以上、SQL Serverのトランザクションログを消す(クリア)する方法でした。

コメント

  1. 通りすがり より:

    物理ファイルのサイズが小さくなる方法まで紹介してほしい。