(この記事は、弊社サポートメンバーがフォーラムへ投稿した内容をブログ向けに編集したものです)
みなさま、こんにちは。WSUS サポート担当です。
本日は WSUS のデータベース SUSDB が肥大化したときの対処方法についてお伝えします。
長期間 WSUS を運用すると、更新プログラムや承認の情報が蓄積され、SUSDB.mdf ファイルが肥大化することがあります。
このときは、まず WSUS クリーンアップ ウィザードを実施して、データベース内の不要なレコードを削除します。
ただし、クリーンアップ ウィザードでレコードを削除するだけでは、一度肥大化した SUSDB.mdf の
ファイルサイズ自体は縮小されません。追加で SQL Server Management Studio や sqlcmd を使用して、
SUSDB を圧縮する必要があります。
手順は以下の通りですので、SUSDB の圧縮が必要になった場合、実施をご検討ください。
データベース ファイル (.mdf) の圧縮
本手順を実施することで、WSUS のデータベース ファイルの圧縮を実施し、容量を削減いたします。
本手順を実施することによる影響につきまして
本手順の実施にあたって、WSUS や IIS のサービスの停止の必要などは必要ございません。
なお、データベース ファイル (.mdf) に対して圧縮処理を実施する場合、データベース ファイルのオフセットの末尾に存在するデータページを、オフセットの先頭側に存在する空き領域に移動する処理を実施した後、オフセットの末尾のアドレスを変更し、ファイル内の未使用領域を オペレーティング システム側に解放するという動作が行われております。
そのため、圧縮処理実行時に、以下のような影響が発生する可能性が考えられます。
- WSUS の処理の中で、移動中のデータページが参照される状況になった場合は、ブロッキングが発生し、処理のパフォーマンスが低下する可能性がある
- 圧縮対象のデータベースに対して WSUS から絶えず処理が行われる状況の場合、圧縮処理のデータページの移動処理 でブロッキングが発生し、圧縮処理の完了までに時間を要する可能性がある
- 圧縮対象のデータベース内で、移動対象となるデータページが多数存在する場合、多数のデータページの移動処理が行われることに伴い、Disk I/O、CPU、メモリ などのマシンリソース負荷が通常時よりも高くなる可能性があり、マシン全体的なパフォーマンスが低下する可能性がある
実施手順
下記の手順にて、WSUS のデータベース ファイルの圧縮を実施します。
- SQL Server Management Studio を起動し、下記のパラメータを入力してデータベースへ [接続] を行います。
1
2
3
4サーバーの種類 : データベース エンジン
サーバー名 : <サーバー名>\インスタンス名
認証 : Windows 認証
※ WID の場合、サーバー名には \\.\pipe\Microsoft##WID\tsql\query を指定します。 - 左ペインの [データベース] を展開し、 [SUSDB] を右クリックし、[タスク]、[圧縮] の順にポイントし、[ファイル] をクリックします。
- 「ファイルの種類」に [データ] が選択されていることを確認します。[データ] が選択されている場合、mdf ファイルが圧縮対象となります。
- [未使用領域の解放前にページを再構成する] を選択して、「圧縮先のファイル」に圧縮後のファイル サイズを指定します。指定可能な値は (最小 XXXX MB) が参考になりますが、急激にサイズを縮小した場合、圧縮処理の過程で巨大な一時ファイルが作成される場合があります。
- 値を指定した後、ウインドウ上部の [スクリプト] をクリックして、ウィザードは [キャンセル] をクリックします。
- 右上ペインのクエリ画面に以下のような SQL が自動生成されておりますので、そのクエリ画面を選択して [実行] をクリックします。
1
2
3
4
5例) 圧縮後のサイズが、200 MB の場合
USE [SUSDB]
GO
DBCC SHRINKFILE (N'SUSDB' , 200)
GO - クエリ実行完了後、再び [データベース] - [SUSDB] を右クリックし、[プロパティ] を選択します。
- [データベースのプロパティ] ウインドウにて [ファイル] ページを開きます。
- 「初期サイズ」の列を確認し、ファイル サイズが圧縮されていることを確認します。