酔いどれエンジニアのブログ

有限会社wisdomのスタッフブログです。主にプログラミングやアプリケーション開発の話題を書いていきます。

SQL SERVER 2005でトランザクション ログが増大し、解放出来ないときの原因と対策。

新しく保守することになった、システムがSQL Server 2005を使ってるんだけども、SQL Serverのログが何やっても解放されないという問題がおきたので、それのとりあえずの原因と対策方法を調べて実施してみました。

ただ、書こうと思ってからひとつき以上立つので、肝心の画面とかがありません。
初回から片手落ちですでごめんなさい。



現象

毎日、朝方に再起動をしているが再起動する度にログファイルが2GB増大する。

原因

復旧モデルを「完全」で設定しているため、SQL SERVER 2005の機能を使ってバックアップしない限り、更新履歴などがログファイルに追加され続けられる事が原因。

ただし、上記の理由だけでは再起動時に2GB増大する現象が説明できないため、アプリケーション側にも問題があるのでは無いかと考えられる。

対処方法



  1. トランザクションログのバックアップ後、解放するようにスケジューリングする。

  2. DBの復旧モデルを「完全」から「単純」に切り替える。

    アクティブでないトランザクションログは自動的に切り捨てられるようになる。


今回1の方法をとったが、トランザクションログが肥大しすぎてバックアップが難しいかったので、バックアップコマンドを実行する際トランザクションログを切り捨てた(truncateした)。

しかし今度はスケジューリングしたトランザクションログのバックアップが失敗し続け始めた。

原因
トランザクションログのバックアップは通常、差分のバックアップになるが、ログを切り捨ててしまうと、差分の判断基準がなくなるから。
対処方法
完全バックアップを一度取る。そうすることでスケジューリングしたタスクは基準を得ることが出来、正常に動くようになる。