none
modeldbのトランザクションログが肥大する要因について RRS feed

  • 質問

  • SQLServer2005 StandardEdition利用

    modeldbのトランザクションログが10G超と肥大してしまいました。

    modeldbの復旧モデルはデフォルトの「完全」となってはいますが、modeldbのトランザクションログがこのように肥大する要因はなんでしょうか?

    ちなみに、業務利用しているDBの復旧モデルは「一括ログ」となっており、毎日完全バックアップを取得、週一で再起動していますが、

    業務DBのトランザクションログの切り捨てを実施していなかったため、2年前に業務DBのトランザクションログが100G超となったことがあります。

    これがなんらか関係しているのでしょうか?

    業務DBについてはその後毎日ログの切り捨てを行い、適切なサイズを保っています。

    ご教授よろしくお願いいたします。

    2014年2月6日 1:57

回答

  • model は新規 DB を作成する際のテンプレートであって、トランザクションログに記録されるような操作を行うべき DB ではありません。
    model のトランザクションログは何もしなければサイズが増えることはありません。
    SQL Server に接続している何らかのアプリケーションか、あるいは接続できる開発者/管理者なりが model 上で何らかの処理を行っているので、その原因を確認すべきでしょう。
    可能性のあるアプリケーションを見直すなり、DB への接続を追うなり、SQL トレースや Profiler で記録するなり、色々やり方はありますので、環境や状況に合わせたやり方で確認すれば良いかと思います。

    なお蛇足ながら、トランザクションログの内容自体を確認したい場合は以下のいずれかの操作で可能ですが、いずれも非ドキュメントの操作であり詳細については公式ドキュメントがありませんので、分かる方のみ参考にしてください。
    DBCC LOG(<DBNAME>);
    SELECT * FROM fn_dblog(null, null);


    MCITP(Database Developer/Database Administrator)

    • 回答の候補に設定 星 睦美 2014年2月14日 0:58
    • 回答としてマーク 星 睦美 2014年2月20日 4:27
    2014年2月10日 1:57

すべての返信

  • model は新規 DB を作成する際のテンプレートであって、トランザクションログに記録されるような操作を行うべき DB ではありません。
    model のトランザクションログは何もしなければサイズが増えることはありません。
    SQL Server に接続している何らかのアプリケーションか、あるいは接続できる開発者/管理者なりが model 上で何らかの処理を行っているので、その原因を確認すべきでしょう。
    可能性のあるアプリケーションを見直すなり、DB への接続を追うなり、SQL トレースや Profiler で記録するなり、色々やり方はありますので、環境や状況に合わせたやり方で確認すれば良いかと思います。

    なお蛇足ながら、トランザクションログの内容自体を確認したい場合は以下のいずれかの操作で可能ですが、いずれも非ドキュメントの操作であり詳細については公式ドキュメントがありませんので、分かる方のみ参考にしてください。
    DBCC LOG(<DBNAME>);
    SELECT * FROM fn_dblog(null, null);


    MCITP(Database Developer/Database Administrator)

    • 回答の候補に設定 星 睦美 2014年2月14日 0:58
    • 回答としてマーク 星 睦美 2014年2月20日 4:27
    2014年2月10日 1:57
  • 返信ありがとうございます。

    業務利用しているアプリケーションでは、modeldbに対して処理は行っていないので、

    何等かのアプリケーションが影響していないか確認してみます。

    2014年2月14日 0:37