none
履歴のクリーンアップを実施すると、いつまでたっても処理が終了せず、一部のファイルが肥大化する。 RRS feed

  • 質問

  • お世話になります。

    メンテナンスプランから日時で履歴のクリーンアップを仕掛けているのですが、処理がうまくいっておらずステータスは成功となっているが

    クリーンアップされず、MSDBData.mdfが24.5GBと肥大化しております。(ほかのサーバは1GBほど)

    その為、履歴クリーンアップタスクのT-SQLをクエリから実行したところ、いつまでたっても処理が終了せず、

    MSDBLog.ldfが20MBだったのが80GBまで肥大化しており、templogなども肥大化してディスクを圧迫しております。

    これは履歴クリーンアップがうまくいっていないということでしょうか。

    また、こちらの肥大化してしまったファイルの縮小と、MSDBData.mdfを縮小するにはどのようにすればよいでしょうか。

    2021年3月24日 1:17

すべての返信

  • Hiroki_0713さん、こんにちは。フォーラムオペレーターのHarukaです。
    MSDNフォーラムにご投稿くださいましてありがとうございます

    以下のスクリーンショットのように履歴のクリーンアップタスクを使用しましたか。
    SQL Serverデータベースのmdfファイルとldfファイルのサイズを縮小したいでしょうか。


    他にご存知の方がおりましたら、情報をご共有いただければ幸いです。

    どうぞよろしくお願いいたします。

    MSDN/ TechNet Community Support Haruka
    ~参考になった投稿には「回答としてマーク」をご設定ください。なかった場合は「回答としてマークされていない」も設定できます。同じ問題で後から参照した方が、情報を見つけやすくなりますので、 ご協力くださいますようお願いいたします。また、MSDNサポートに賛辞や苦情がある場合は、MSDNFSF@microsoft.comまでお気軽にお問い合わせください。~

    2021年3月26日 7:52
    モデレータ
  • 履歴クリーンアップ タスクの中では、ストアドプロシージャ msdb.dbo.sp_delete_backuphistory, msdb.dbo.sp_purge_jobhistory および msdb..sp_maintplan_delete_log が実行されています。

    sp_delete_backuphistory (Transact-sql)
    https://docs.microsoft.com/ja-jp/sql/relational-databases/system-stored-procedures/sp-delete-backuphistory-transact-sql?WT.mc_id=DP-MVP-5004154&view=sql-server-ver15

    sp_purge_jobhistory (Transact-SQL)
    https://docs.microsoft.com/ja-jp/sql/relational-databases/system-stored-procedures/sp-purge-jobhistory-transact-sql?WT.mc_id=DP-MVP-5004154&view=sql-server-ver15


    そして、ストアドプロシージャ msdb.dbo.sp_delete_backuphistory の中では、以下のテーブル データの削除がされています。

    DELETE FROM msdb.dbo.backupfile WHERE <条件>
    DELETE FROM msdb.dbo.backupfilegroup  WHERE <条件>
    DELETE FROM msdb.dbo.restorefile WHERE <条件>
    DELETE FROM msdb.dbo.restorefilegroup <条件>
    DELETE FROM msdb.dbo.restorehistory <条件>
    DELETE FROM msdb.dbo.backupset <条件>
    DELETE msdb.dbo.backupmediafamily <条件>
    DELETE msdb.dbo.backupmediaset <条件>

    また、ストアドプロシージャ msdb.dbo.sp_purge_jobhistoryの中では、以下のテーブル データの削除がされています。

    DELETE FROM msdb.dbo.sysjobhistory WHERE <条件>

    恐らく、上記に記載したテーブルに大量のデータが保持され、かつ、履歴クリーンアップの処理(msdb.dbo.sp_purge_jobhistory)で一度に大量のデータを削除していることに起因し、トランザクションログが肥大化するような現象が発生しているのだと思います。
    問題の切り分けとして、ストアドプロシージャ msdb.dbo.sp_delete_backuphistory, msdb.dbo.sp_purge_jobhistory でパラメータ @oldest_date を指定し、一度に削除されるデータ量を減らすことで、MSDB上のデータを削除することが可能となるか確認されてみてはいかがでしょう?
    2021年3月26日 14:30
  • Haruka6002さん

    ご連絡ありがとうございます。

    >以下のスクリーンショットのように履歴のクリーンアップタスクを使用しましたか。

    はじめは履歴のクリーンアップタスクを利用いたしましたが、ldfファイルが肥大化したため処理を中止し、

    履歴クリーンアップのT-SQLをクエリにて再度実施した結果、初めに記載した通りldfっファイルやtempファイルが80GBまで肥大化してしまいました。

    >SQL Serverデータベースのmdfファイルとldfファイルのサイズを縮小したいでしょうか。

    現在はmdfファイルとldfファイルどちらも縮小させたいと考えております。



    2021年3月30日 5:41
  • NOBTAさん

    ご連絡ありがとうございます。

    >一度に大量のデータを削除していることに起因し、トランザクションログが肥大化するような現象が発生しているのだと思います。

    上記原因により肥大化した可能性がある旨承知いたしました。

    >一度に削除されるデータ量を減らすことで、MSDB上のデータを削除することが可能となるか確認されてみてはいかがでしょう?

    こちらに関して、現在チーム内でも検討しており、対応しようと準備しております。

    対応後に改めてご連絡させていただきます。


    2021年3月30日 5:52
  • Hiroki_0713さん、こんにちは。フォーラムオペレーターのHarukaです。
    ご返信いただきありがとうございます。

    >初めに記載した通りldfっファイルやtempファイルが80GBまで肥大化してしまいました。
    →ログファイルのサイズを小さくするには、ログファイルを縮小することをお勧めします。 
    以下の手順に従って、ログファイルを縮小してください。

    1.データベースの完全バックアップを実行します。
    2.トランザクションログのバックアップを実行します。
    場合によっては、トランザクションログを縮小する前に、マルチトランザクションログのバックアップを実行する必要があります。
    3.トランザクションログを縮小します。 
    「データベース」を右クリック->タスク->縮小->ファイル->ファイルタイプを「ログ」に変更->「未使用スペースを解放する前にページを再編成」を選択します。
    トランザクションログを縮小できない場合は、次のステートメントを実行して、トランザクションログを縮小できない理由を確認してください。
    SELECT log_reuse_wait_desc FROM sys.databases WHERE name = '<データベース名>'
    結果がNOTHING以外の場合は、対応する操作を実行してください。 その後、手順2と3をもう一度お試しください。

    Tempdbは、SQL Serverが起動するたびに再作成されるため、システムは常にデータベースのクリーンコピーで起動します。 
    SQL Serverサービスを(可能であれば)再起動して、tempdbファイルをクリーンアップすることができます。

    どうぞよろしくお願いいたします。

    MSDN/ TechNet Community Support Haruka
    ~参考になった投稿には「回答としてマーク」をご設定ください。なかった場合は「回答としてマークされていない」も設定できます。同じ問題で後から参照した方が、情報を見つけやすくなりますので、 ご協力くださいますようお願いいたします。また、MSDNサポートに賛辞や苦情がある場合は、MSDNFSF@microsoft.comまでお気軽にお問い合わせください。~

    2021年3月31日 3:18
    モデレータ
  • Hiroki_0713さん、こんにちは。フォーラムオペレーターのHarukaです。
    ご返信いただきありがとうございます。

    ご質問いただいた件ですが、その後いかがでしょうか。
    追加でご確認いただいたことなどあれば、追記いただくことで回答がつきやすくなります。
    また、参考になった投稿があれば、[回答としてマーク]を設定いただけますと幸いです。

    どうぞよろしくお願いいたします。

    MSDN/ TechNet Community Support Haruka
    ~参考になった投稿には「回答としてマーク」をご設定ください。なかった場合は「回答としてマークされていない」も設定できます。同じ問題で後から参照した方が、情報を見つけやすくなりますので、 ご協力くださいますようお願いいたします。また、MSDNサポートに賛辞や苦情がある場合は、MSDNFSF@microsoft.comまでお気軽にお問い合わせください。~

    2021年4月12日 2:18
    モデレータ