Q. SQL ServerのシステムDB(dbsdb)が肥大化し、ディスク容量が逼迫しています。対応方法はありますか?
【1】考えられる要因
dbSheetの日々の運用により、サーバーログとシステムDBのトランザクションログが蓄積されることが要因です。
以下の対処方法を行わずに運用を継続すると、ログ情報によってディスクが逼迫します。
【2】対処方法
システムDB(dbsdb)の肥大化には、以下の4ステップで対応します。
- ステップ1:システムDBが使用しているディスク容量の確認
- ステップ2:システムDBのトランザクションログファイルの縮小
- ステップ3:サーバーログテーブルから不要なログデータの削除
- ステップ4:サーバーログテーブルのあるデータファイルの縮小
≪ご検討いただきたいこと≫
システムDBの肥大化が解消した後は、以下の内容をご検討ください。
なお、定期的なシステムDBのディスク容量の確認と対処をお願いいたします。
①システムDBの復旧方法
現在の復旧モデルが「完全」の場合、「単純」に変更する。
システムDBの復旧方法として、トランザクションログを使用しない場合は「単純」にできます。
詳細はステップ2をご参照ください。
②サーバーログの保存期間
保存期限を適切な一定期間としてください。
保存期間が長い分、ディスク使用量は大きくなります。
詳細はステップ3をご参照ください。
ステップ1:システムDBが使用しているディスク容量の確認
サーバーログとトランザクションログのディスク予約済み領域サイズ(ディスク使用量)を確認します。
上位のテーブルによるディスク使用量の確認で、サーバーログテーブル(T_USER_LOG_V6)のレコード数やディスク使用量などを確認します。
・ 蓄積されるログの種類
①データ更新時のログ:トランザクションログ(.ldf)に蓄積
②プロジェクト実行時のログ:サーバーログテーブル(T_USER_LOG_V6)に蓄積
・ 確認項目(SQL Server Management Studio を使用)
①システムDBのディスク使用量
②トランザクションログ(.ldf)の使用量
③サーバーログテーブル(T_USER_LOG_V6)の使用量
・確認手順
①SQL Server Management Studio を起動します。
②左ペインのオブジェクトエクスプローラからデータベース[dbsdb]を右クリック
③[レポート] → [標準レポート] → [ディスク使用量]を選択
※このレポートにより、システムDBのディスク使用量が確認できます。
●システムDBおよびトランザクションログ(.ldf)のディスク使用量の確認
① SQL Server Management Studioを起動します。
② 左ペインのオブジェクトエクスプローラからデータベース[dbsdb]を右クリックして、 [レポート] → [標準レポート] → [ディスク使用量]を選択します。

※本レポートにより、システムDBのディスク使用量が分かります。
《ディスク使用量の画面例》

※ この例では、システムDB(dbsdb)のディスク使用量が 12.48GB あります。
●トランザクションログが肥大化した場合に発生する現象
1. ディスク容量の逼迫
・他の処理やバックアップに必要な領域の圧迫
・SQL Serverが書き込み不能による、アプリケーションの停止
2. パフォーマンス低下
・ データベースのレスポンス低下
3. 復旧不能リスク
・障害時にポイントインタイムリカバリが困難になる可能性
※ポイントインタイムリカバリ
「特定の時点にデータベースの状態を戻すための復元手法」
・サーバーログ テーブル(T_USER_LOG_V6)のディスク使用量の確認
同様に、SQL Server Management Studio を使用して確認します。
①左ペインのオブジェクトエクスプローラからデータベース[dbsdb]を右クリック
②[レポート] → [標準レポート] → [上位テーブルによる使用量]を選択
※本レポートにより、テーブル(T_USER_LOG_V6)のディスク使用量が確認できます。

《上位テーブルのディスク使用量の画面例》

例:T_USER_LOG_V6 のディスクの使用量は、項目名「予約済み」のサイズです。
ステップ2:システムDBのトランザクションログファイルの縮小
サーバーログデータの削除時にもトランザクションログが出力されます。
ディスク容量が逼迫している場合は、先にこのステップを実施してください。
詳細は下記FAQを参照ください。
システムDB(dbsdb)のトランザクションログ領域を縮小する手順を教えてください。 | dbSheet
ステップ3:サーバーログテーブルからの不要なログデータの削除
サーバーログテーブル(T_USER_LOG_V6)に蓄積されたログの保管期間を一定に保ち、保管期間を過ぎたログを削除することで、ディスク使用量が極端に増えることを防げます。
ログを削除しても、データファイルの縮小はされませんが、削除した領域は再利用されます。
詳細は下記FAQをご参照ください。
サーバーログビューア(ServerLogViewer)のログデータ削除は、動作改善に効果がありますか? | dbSheet
ステップ4:サーバーログテーブルのあるデータファイルの縮小
サーバーログテーブル(T_USER_LOG_V6)に蓄積されたログをある程度長い期間を指定して
削除した場合、データファイルの縮小がより可能となります。
●データファイルの縮小
以下のクエリでデータの再配置と末尾の再利用可能領域の解放を行います。
USE [dbsdb]
GO
DBCC SHRINKFILE (N'dbsdb',0,NOTRUNCATE)
GO
DBCC SHRINKFILE (N'dbsdb',0,TRUNCATEONLY)
GO FAQの改善にご協力ください。
このページは役に立ちましたか?