none
SQL Server2008 R2でトランザクションログが増え続ける RRS feed

  • 質問

  • SQL Server 2008 R2(32Bit)で運用しているデータベースがあり、

    毎日SQLジョブにて、データベースのバックアップ、及びトランザクションログのバックアップを行っていますが、

    トランザクションログが開放されず、肥大化してしまっていて困っています。

    復旧モデルは完全を選択しています。

     

    因みに、ディスク容量の関係で、

    データベースはEドライブ、

    トランザクションログはFドライブ(本来はEドライブにしたいが、空き容量がないのでFにしている)

    にバックアップをしています。

    また、インストール時の物理的なファイル(MDFとLDF)はEドライブにあります。

     

    初心者ゆえ、実行したしたDBCCコマンドやクエリ等は特にありません。

     

    よろしくお願いします。

    2011年5月13日 8:56

回答

  • 自己解決したので報告します。

     

    CDCを削除(sp_cdc_disable_tableとsp_cdc_disable_db)をした後、sys.databaseをSELECTしたところ、

    log_reuse_waitが ”2”

    log_reuse_wait_descが ”LOG_BACKUP”

    となりましたので、DBのバックアップ及びトランザクションのバックアップをしたところ、トランザクション領域が開放されました。

     

    なぜにおかしくなったのかの原因はわかりませんが、無事に解決したのでクローズさせていただきたいと思います。

     

    色々とお騒がせ致しまして、すみませんでした。

    2011年5月16日 11:18

すべての返信

  • 自己レス(追加情報)です。

     

    MSDNライブラリの「ログの切り捨てが遅れる原因となる要因」をみて、sys.database カタログ ビューの log_reuse_wait 列と log_reuse_wait_desc を確認したところ、

     

    log_reuse_waitが ”6”

    log_reuse_wait_descが ”REPLICATION”

     

    となっていました。

    その説明欄をみると、

    「トランザクション レプリケーション中、パブリケーションに関連するトランザクションがディストリビューション データベースにまだ配信されていない (完全復旧モデルのみ)。」と書かれていますが、何の事なのか良くわかりません。

     

    データベース作成時に何かしてしまったのでしょうか?



    2011年5月13日 11:21
  • メッセージの通りになってしまいますが、該当のデータベースで仕掛かり中の
    トランザクションレプリケーションが動いているのではないでしょうか。
    すでにご覧になっていると思われる
    http://msdn.microsoft.com/ja-jp/library/ms345414.aspx
    この情報にあるように、レプリケーションの状態を調べてみてはいかがでしょうか。
    2011年5月13日 11:34
    モデレータ
  • そもそもレプリケーションというものが良くわからず、設定した記憶がないのです・・・。

     

    どうすれば元通りになるでしょうか?

    2011年5月13日 12:23
  • レプリケーションはデータの複製を定期的に行う機能です。
    規定動作で動いているものではないと思うので、まず運用上誰かが使っていないか確認が必要かと思います。
    SQL Server Management Studioのサーバを展開するとレプリケーションの項目がありますので
    そこからパブリッシャやディストリビュータの設定がされていないか確認をしてください。

    もし本当にレプリケーションが不要なのであれば停止や削除を行ってください。
    以下に関連するリンクを挙げます。参考までに。

    http://technet.microsoft.com/ja-jp/library/ms152757.aspx
    http://technet.microsoft.com/ja-jp/library/ms151759.aspx


    また以下のKBも参考になると思います。
    http://support.microsoft.com/kb/317375/ja
    2011年5月13日 15:05
    モデレータ
  • ElanLilacさん、情報の提供ありがとうございます。

    パブリッシャやディストリビュータの設定は特に行っていません。また、SQL Server Management Studioで確認したところ、他の方が設定したような形跡もありませんでした。

     

    SQLジョブで実行していたときは気がつかなかったのですが、クエリでトランザクションのバックアップを取ってみたら次のようなメッセージが表示されました。

    ---------------------------------------------------------------------------------------

    ログの開始時点でレコードがレプリケーション用または Change Data Capture 用に保留されているので、ログは切り捨てることができませんでした。

    ログリーダー エージェントまたはキャプチャ ジョブが実行されていることを確認するか、sp_repldone を使用してトランザクションを配布済みまたはキャプチャ済みとしてマークしてください。

    ---------------------------------------------------------------------------------------

    これを見て思い出しましたが、とあるテーブルに「Change Data Capture」を設定したのですが、SQLジョブにそのエントリが消えてしまっていました。

    もしかしたらCDCが原因かとおもいますが、CDCを再設定すれば元にもどりますでしょうか?

    手順等もお分かりになるようでしたらご教授をお願いいたします。



    2011年5月16日 3:15
  • 自己解決したので報告します。

     

    CDCを削除(sp_cdc_disable_tableとsp_cdc_disable_db)をした後、sys.databaseをSELECTしたところ、

    log_reuse_waitが ”2”

    log_reuse_wait_descが ”LOG_BACKUP”

    となりましたので、DBのバックアップ及びトランザクションのバックアップをしたところ、トランザクション領域が開放されました。

     

    なぜにおかしくなったのかの原因はわかりませんが、無事に解決したのでクローズさせていただきたいと思います。

     

    色々とお騒がせ致しまして、すみませんでした。

    2011年5月16日 11:18