none
トランザクションログの圧縮または切り捨てについて(復旧モデルを単純に変更後) RRS feed

  • 質問

  • オペレーションミスにより大量のトランザクションログが発生し、ログ配置ドライブ領域が枯渇してしまいました。

    (1トランザクションで大量deleteを実施)

    この際に下記作業を実施し、なんとか運用はできているのですが、トランザクションログの空き領域を減らし、ドライブ枯渇問題を対処したいと考えております。

    <事象発生時に実施した作業>

    1. deleteクエリを停止。ロールバックが実行されたが処理が終わらないためサービスの再起動を実施
    2. DBの復旧が実行され、オンラインになる

    <ドライブ枯渇対応として実施した作業>

    1. DBCC SHRINKFILE (XXXXX , 208724) を実行したが、下記エラーが発生
    2. DBバックアップにてログの切り捨てを実行しようとしたが、バックアップを取得していなかったため実行不可
    3. 復旧モデルを単純に変更
    4. もう一度DBCC SHRINKFILEを実行したが、下記エラーが発生

    <DBCC SHRINKFILE 実行時エラーメッセージ>

    メッセージ 2601、レベル 14、状態 1、プロシージャ sp_flush_commit_table、行 16
    一意インデックス 'si_xdes_id' を含むオブジェクト 'sys.syscommittab' には重複するキー行を挿入できません。重複するキーの値は (10600070982) です。
    ステートメントは終了されました。
    DBCC の実行が完了しました。DBCC がエラー メッセージを出力した場合は、システム管理者に相談してください。
    メッセージ 3999、レベル 17、状態 1、行 1
    エラー 2601 により、dbid 6 でコミット テーブルをディスクにフラッシュできませんでした。詳細については、エラー ログを確認してください。

    恐らく、強制的にサービスを再起動したことでトランザクションログが壊れてしまい、ログ圧縮ができない状態だと思うのですが、ファイルサイズを小さくする方法はございますでしょうか?

    ご教授頂けますと幸いです。よろしくお願い致します。

    環境情報

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

    SQL Serverバージョン:2012(SQL Server 11.0.2100)

    現在割り当てられている領域:208724.00 MB
    使用可能な空き領域:207981.77 MB (99%)

    復旧モデル:完全から単純に変更

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


    • 編集済み emsg 2017年8月2日 4:11
    2017年8月2日 4:11

回答

すべての返信

  • とりあえず、そのエラーを検索すると、下のKBがひっかかりましたが、該当してますか?
    https://support.microsoft.com/en-us/help/3083381
    https://support.microsoft.com/ja-jp/help/3083381


    jzkey

    2017年8月2日 12:16
  • ご確認ありがとうございます。

    変更の追跡は実施しているため、内容を確認し対応してみます!

    実施後に結果を共有させて頂きます。

    2017年8月3日 3:27
  • @jzkey さん

    遅くなりましたが、上記作業を実施したところエラーも解消され、ログの圧縮も実行できました。

    ありがとうございました!

    2017年9月11日 0:45