treedown’s Report

システム管理者に巻き起こる様々な事象を読者の貴方へ報告するブログです。会社でも家庭でも"システム"に携わるすべての方の共感を目指しています。

※https化しました。その影響でしばらくリンク切れなどがあるかもしれませんが徐々に修正していきます。 リンク切れなどのお気づきの点がございましたらコメントなどでご指摘いただけますと助かります。

WSUSの接続エラーを解消するメンテナンス実施

WSUSを利用しているとどうしても発生してしまう接続エラー。
接続エラー解消のためには、コツコツ定期的なメンテナンスが必要となります。
この辺りの話をご報告。

WSUS管理コンソール画面がエラーに

Windows Server 2012(R2ではない)の役割として追加されたWSUSを長期的に大量のパッチで運用していると、

f:id:treedown:20200427172513p:plain
「WSUSサーバーに接続中にエラーが発生しました。このエラーが発生する原因はたすうあります。サーバーとの接続を確認してください。問題が解決しない場合は、ネットワーク管理者に問い合わせてください。

[サーバーノードのリセット]をクリックすると、サーバーへの再接続を試行します。」

こんなエラーに遭遇して、WSUS管理コンソール上での操作ができなくなってしまいます。
大抵は大量のパッチを管理しているWSUSサーバでパッチの情報を一覧で閲覧しようとした際にこのエラーに遭遇してそれ以降の操作ができなくなってしまいます。
※コンピュータの一覧とか設定画面とかではこれが出ないけど、パッチの操作をする時だけはこれが出てしまう。

ただし、管理コンソールを起動すると必ずエラーになる、と言う場合、ちょっと症状が違う場合もあるので、次の「正常動作を確認」でサービスを確認してみます。

まず正常動作を確認

体験談その1
このエラーに遭遇したとき、IIS(インターネットインフォメーションサービス)マネージャーのアプリケーションプールの画面を確認すると、

f:id:treedown:20200427172539p:plain
WsusPoolが停止状態となっていることがありました。この停止状態によって、上記WSUSコンソールのエラーが発生していることもあります。

このときは、WsusPoolを開始することでエラーが解消したこともあるのですが、この部分(状態)が「開始済み」と表示されているにもかかわらず、上記のエラーが出てしまう場合にはこれ以降に進みます。

更新プログラムのビューを開く際にエラーとなる場合

体験談その2
今回は、更新プログラムのビューのいずれかを開くとくだんの症状が発生していました。
この場合にはパフォーマンスの問題が発生しているといえますので、メンテナンス操作によって以前のパフォーマンスを取り戻す必要が出てきます。

インデックスの再構築

まずやらなきゃいけないのが、WSUSで利用されているSUSDBというデータベースをメンテナンスする必要があります。インデックスが断片化しクエリが正常終了しなくなったり動作遅延の要因になったり、これが接続エラーの多発に繋がることがあります。

※今回はWindows Server 2012導入のWSUSのスタンダートといえる「WID(Windows Internal Database)」を利用しているケースでの操作を実施しました。それ以外のSQL Serverが利用されている場合には各々読み替えて実施することになります。

WIDではSQL Server Management Studioが用意されていないのですが、SQL Server Management Studio Expressを利用してWIDに対する操作を実行することが可能。

http://www.microsoft.com/ja-jp/download/details.aspx?id=43351

で、「SQLManagementStudio_x64_JPN.exe」をダウンロードし、インストールしておきます。
※ただし「.NET Framework 3.5」を要求されるので、予めインストール済みかどうかは確認、未インストールの場合には先に「.NET Framework 3.5」を機能の追加から実行しておく。

SQL Server Management Studio Expressを起動して、最初の認証を実行して、オブジェクトエクスプローラーの階層を展開して行くとSUSDBを発見。

SUSDBを右クリックし、「新しいクエリ」を選択します。

f:id:treedown:20200427172729p:plain
新しいクエリを選択すると、

f:id:treedown:20200427172743p:plain
クエリを入力する欄が出てくるので、

https://gallery.technet.microsoft.com/scriptcenter/6f8cde49-5c52-4abd-9820-f1d270ddea61

にある(Re-index the WSUS Database)WSUSデータベースメンテナンススクリプトをコピーアンドペースト。

貼り付けたら、

f:id:treedown:20200427172811p:plain
画面中にある「実行」ボタンをクリック。
すると、画面下の方では、「クエリを実行しています」がグルグル回り処理が進行していきます。

f:id:treedown:20200427172844p:plain

しばらく待つと、

f:id:treedown:20200427172901p:plain
「クエリが正常に実行されました」という表示に変わるので、メッセージ欄から「全テーブルの統計が更新されました」というメッセージを探し出せば、クエリの実行は完了。

インデックスの再構築は完了しているので、次のステップに進みます。

クリーンアップの実行

インデックスの再構築が完了したところで、WSUS管理コンソールに画面を戻します。

※接続できないエラー中でも、WSUS自体が正常動作していればオプション画面は開くはず。

「オプション」から「サーバークリーンアップウィザード」を選択し、クリーンアップを実行します。

f:id:treedown:20200427172922p:plain
クリーンアップウイザードの画面が開始します。

f:id:treedown:20200427172940p:plain
クリーンする項目の選択では、負荷を軽くする目的と、一番重い(エラーの原因となっている)処理をとりあえず解消するために、一番上の、「不要な更新プログラムと更新プログラムのリビジョン」だけが選択されている状態で画面を進めます。
※エラーが発生しなくなった、ないし動作が軽くなったら、改めて他の項目も実行すればいいのではないかと。
「次へ」をクリックすると、画面が進んでクリーンアップが実行されます。

f:id:treedown:20200427173000p:plain
実行中、

f:id:treedown:20200427173014p:plain
完了を待ちます。

f:id:treedown:20200427173034p:plain
正常に完了。

これでメンテナンスは完了です。(本来なら)

しかし…

上記テスト環境で手順を検証してみた時には問題なく完了したクリーンアップウイザードですが、いざ本番環境で実行すると、正常に完了しない。

f:id:treedown:20200427173154p:plain
※ちなみに、ツールが足りないのか、デバッグはできませんので、「いいえ、デバッグを取り消します」しか選択できません。

クリーンアップウイザードを実行中にこのようなエラーが発生してしまい、クリーンアップウイザードが終了しない(強制終了される)、という問題に突き当たってしまいました。これどうしたものか。

別の対処方法が必要になるようです。次に続きます。

追記(2020-04-30):

別の対処をした記録

blog.treedown.net

こちらで完了しました。