Windows Update

WSUS - 管理コンソールが開けないエラー

2021年10月12日

自分
Windows Server Update Service [WSUS]を利用していると管理コンソールが開けないことありませんか?? 実際に私はエラーになったことが何度かあるため、解決に至る方法をまとめて本記事に記載します
 

 

Windows Server Update Service [WSUS] とは?

Windows 10 や Windows 11 のWindows Update [更新]を管理することが可能です。

「なぜ更新を管理するのか」ですが、「業務で利用している端末がWindows Updateによる機能更新で業務が遂行できなくなる」そんな状況を回避するために配信される更新プログラムを制御し事前検証をしたうえで展開することが可能です。

また、更新プログラムをWSUSからダウンロードすることによってインターネットトラフィックを減らすことができるというメリットもあります。

 

WSUS 管理コンソール

エラー発生状況

WSUSの管理コンソールを開いたときに、以下のようなポップアップが開き
「エラ-:接続エラー WSUSサーバーに接続中にエラーが発生しました。 このエラーが発生する原因は多数あります。サーバーとの接続を確認してください。問題が解決しない場合は、ネットワーク管理者にお問い合わせください。」というメッセージが表示されます。

今回ご説明させて頂くWSUSでのエラーは、この画面が出た時の対処法となります。
エラ-:接続エラー WSUSサーバーに接続中にエラーが発生しました。 このエラーが発生する原因は多数あります。サーバーとの接続を確認してください。問題が解決しない場合は、ネットワーク管理者にお問い合わせください。

 

エラー発生時の回避方法

エラーの回避方法は4種類あります。
全てを実施頂く、もしくは1部を実施して頂き様子を見て頂ければと思います。

以下タイトルの①のみで完了しない場合は、②を実施頂ければ大抵のエラーは解決します。
ここで解決しない場合は、後続の処理を実施ください。

① IIS のチューニング - メモリ回り

  1. 1.サーバーマネージャーより[ツール]をクリックし、[インターネット インフォメーション サービス(IIS) マネージャー]をクリックして開きます。

  2. [<サーバー名]をクリックし、[アプリケーションプール]を開きます。
    [WsusPool]を選択した状態で、右ペインより[詳細設定]をクリックします。

  3. 以下のような[詳細設定]画面にて、以下項目を設定していきます。
    [詳細設定]画面にて、以下項目を設定
    • プライベート メモリ(KB):0 (無制限)
    • Ping が有効:False
    • 通常の時間間隔:0
    • アイドルタイムアウト:0
    • キューの長さ:2000
  4. 設定が完了したら、[OK]をクリックします。

  5. IISとWSUSサービスの再起動 または、サーバーを再起動し設定内容を反映させて完了です。

② Windows Internal Database [WID] のチューニング

WSUSのためにデータベースを建てておらず、Windows Internal Database [WID]を利用しているよ。という場合は、以下のチューニングを試してみることで解決できるかもしれません。

なお、規定ではWIDがインストールされセットアップされているのでデータベースの指定やインストールを自身でやっていない方に関しては、WIDを利用していると判断して問題ありません。

 

必要ツールのダウンロード

  1. Microsoft SQL Server 2012 Feature Pack と検索し、Microsoftのダウンロードセンターを開きます。

  2. [+インストール] をクリックします。
    Microsoft SQL Server 2012 Native Client より[sqlncli.msi] をダウンロードして WSUS サーバーにインストールしておきます。

  3. 同時並行で処理をせず、上記2が完了してから進めてください。
    上記1の画面で、[+インストール] をクリックして、Microsoft SQL Server 2012 コマンド ライン ユーティリティより[SqlCmdLnUtils.msi]をダウンロードしインストールしてください。

チューニング方法

  1. コマンドプロンプトを[管理者として実行]で起動します。

  2. [sqlcmd]コマンドで WID に接続します。
    • コマンド例:WSUS 3.0
       command
      sqlcmd -E -S \\.\pipe\mssql$microsoft##ssee\sql\query
      
    • コマンド例:Windows Server 2012 以降のWSUS
       command
      sqlcmd -E -S \\.\pipe\MICROSOFT##WID\tsql\query
      
  3. 接続が出来たら、以下コマンドを実行します。
     command
    EXEC sp_configure ‘show advanced options’,1

  4. 次に、以下コマンドを実行してチューニングを実行します。
    メモリ容量を1536GBにするコマンドです。
     command
    EXEC sp_configure ‘min server memory’,1536
    


  5. 次に以下のコマンドを実行し、run_value が設定された値になっているか確認してください。
     command
    EXEC sp_configure ‘min server memory’
    


  6. 設定は上記で完了ですので、exit でsqlcmdを終了します。

③ Windows Internal Database [WID] のチューニング - インデックスの再構築

上記手順で解決しない場合は、Windows Internal Database [WID]のインデックスに不具合がある可能性があるため、インデックスの再構築を行ってみてください。

インストール時は開けた、運用中に急に開けなくなった。一部メニューだけ表示がおかしくなった。そんなときにも有効です。

この方法で解決された場合には、定期的にインデックスの再構築を行うようにしてみると再発する可能性を下げられるので、タスクスケジューラー等で定期的に 実行しても良いかもしれません。なお、1月に1回のインデックス再構築をMicrosoftが推奨しております。

事前ダウンロード

  • 本手順実施前に、SQL Server Management Studio Expressをダウンロードしインストールしておいてください。もちろん無料でダウンロードとインストールが可能です。

WID インデックスの再構築 手順

  1. 予めインストールしておいた[SQL Server Management Studio Express]を起動します。

  2. 下記のパラメータを入力してデータベースへ [接続] を行います。
    • サーバーの種類:データベース エンジン
    • サーバー名:\\.\pipe\Microsoft##WID\tsql\query
            ※WSUS 3.0の場合は、\\.\pipe\mssql$microsoft##ssee\sql\query
    • 認証:Windows 認証
  3. 画面左側メニューにあるデータベースのツリーから [SUSDB] を右クリックします。
    クリック後に表示される[新しいクエリ] をクリックします。

  4. 画面右側のクエリ実行画面をクリックし、以下に記載されているインデックスをクリアするスクリプトをコピー&ペーストして、実行します。
    このスクリプトはMicrosoftのDocで公開されている物です。
    公開先://docs.microsoft.com/ja-jp/troubleshoot/mem/configmgr/reindex-the-wsus-database

     command
    USE SUSDB; GO SET NOCOUNT ON; -- Rebuild or reorganize indexes based on their fragmentation levels DECLARE @work_to_do TABLE ( objectid int , indexid int , pagedensity float , fragmentation float , numrows int ) DECLARE @objectid int; DECLARE @indexid int; DECLARE @schemaname nvarchar(130); DECLARE @objectname nvarchar(130); DECLARE @indexname nvarchar(130); DECLARE @numrows int DECLARE @density float; DECLARE @fragmentation float; DECLARE @command nvarchar(4000); DECLARE @fillfactorset bit DECLARE @numpages int -- Select indexes that need to be defragmented based on the following -- * Page density is low -- * External fragmentation is high in relation to index size PRINT 'Estimating fragmentation: Begin. ' + convert(nvarchar, getdate(), 121) INSERT @work_to_do SELECT f.object_id , index_id , avg_page_space_used_in_percent , avg_fragmentation_in_percent , record_count FROM sys.dm_db_index_physical_stats (DB_ID(), NULL, NULL , NULL, 'SAMPLED') AS f WHERE (f.avg_page_space_used_in_percent < 85.0 and f.avg_page_space_used_in_percent/100.0 * page_count < page_count - 1) or (f.page_count > 50 and f.avg_fragmentation_in_percent > 15.0) or (f.page_count > 10 and f.avg_fragmentation_in_percent > 80.0) PRINT 'Number of indexes to rebuild: ' + cast(@@ROWCOUNT as nvarchar(20)) PRINT 'Estimating fragmentation: End. ' + convert(nvarchar, getdate(), 121) SELECT @numpages = sum(ps.used_page_count) FROM @work_to_do AS fi INNER JOIN sys.indexes AS i ON fi.objectid = i.object_id and fi.indexid = i.index_id INNER JOIN sys.dm_db_partition_stats AS ps on i.object_id = ps.object_id and i.index_id = ps.index_id -- Declare the cursor for the list of indexes to be processed. DECLARE curIndexes CURSOR FOR SELECT * FROM @work_to_do -- Open the cursor. OPEN curIndexes -- Loop through the indexes WHILE (1=1) BEGIN FETCH NEXT FROM curIndexes INTO @objectid, @indexid, @density, @fragmentation, @numrows; IF @@FETCH_STATUS < 0 BREAK; SELECT @objectname = QUOTENAME(o.name) , @schemaname = QUOTENAME(s.name) FROM sys.objects AS o INNER JOIN sys.schemas as s ON s.schema_id = o.schema_id WHERE o.object_id = @objectid; SELECT @indexname = QUOTENAME(name) , @fillfactorset = CASE fill_factor WHEN 0 THEN 0 ELSE 1 END FROM sys.indexes WHERE object_id = @objectid AND index_id = @indexid; IF ((@density BETWEEN 75.0 AND 85.0) AND @fillfactorset = 1) OR (@fragmentation < 30.0) SET @command = N'ALTER INDEX ' + @indexname + N' ON ' + @schemaname + N'.' + @objectname + N' REORGANIZE'; ELSE IF @numrows >= 5000 AND @fillfactorset = 0 SET @command = N'ALTER INDEX ' + @indexname + N' ON ' + @schemaname + N'.' + @objectname + N' REBUILD WITH (FILLFACTOR = 90)'; ELSE SET @command = N'ALTER INDEX ' + @indexname + N' ON ' + @schemaname + N'.' + @objectname + N' REBUILD'; PRINT convert(nvarchar, getdate(), 121) + N' Executing: ' + @command; EXEC (@command); PRINT convert(nvarchar, getdate(), 121) + N' Done.'; END -- Close and deallocate the cursor. CLOSE curIndexes; DEALLOCATE curIndexes; IF EXISTS (SELECT * FROM @work_to_do) BEGIN PRINT 'Estimated number of pages in fragmented indexes: ' + cast(@numpages as nvarchar(20)) SELECT @numpages = @numpages - sum(ps.used_page_count) FROM @work_to_do AS fi INNER JOIN sys.indexes AS i ON fi.objectid = i.object_id and fi.indexid = i.index_id INNER JOIN sys.dm_db_partition_stats AS ps on i.object_id = ps.object_id and i.index_id = ps.index_id PRINT 'Estimated number of pages freed: ' + cast(@numpages as nvarchar(20)) END GO --Update all statistics PRINT 'Updating all statistics.' + convert(nvarchar, getdate(), 121) EXEC sp_updatestats PRINT 'Done updating statistics.' + convert(nvarchar, getdate(), 121) GO
    

 

④IIS のチューニング - コンフィグファイル

上記まで実施して解決しない場合は、IISで利用されているコンフィグファイルの[Web.config]を修正してみてください。
以下手順で修正が完了します。

  1. サーバーマネージャーにて、[ツール]をクリックし[インターネット インフォメーション サービス(IIS) マネージャー]をクリックして開きます。

  2. [<サーバー名>]をクリックし、次に[サイト]をクリックして[WSUSの管理]をクリックします。
    その後[ClientWebService]を右クリックし、[エクスプローラー]をクリックします。

  3. [Web.config]を修正するので、必要に応じて[Web.config]をコピーして修正前のファイルをバックアップしてください。

  4. [Web.config]をメモ帳で開き、以下内容を修正します。

    • 修正前の値:<httpRuntime maxRequestLength="4096" />
    • 修正後の値:<httpRuntime executionTimeout="500" maxRequestLength="4096" /> <caching> <cache privateBytesLimit="8000000000"/> </caching>
      [Web.config]をメモ帳で開き、以下内容を修正
  5. [名前を付けて保存]にて任意の場所に(デスクトップやダウンロードなど)保存します。

  6. 保存したファイルを元のフォルダ[本章項番2で開いたフォルダ]にコピーして、Web.configを上書きします。

  7. [インターネット インフォメーション サービス(IIS) マネージャー]にて[<サーバー名>]をクリックし[アプリケーションプール]を選択し、[WSUS Pool]を右クリックして[リサイクル]をクリックして実行します。

 

さいごに・・・

長々と、WSUSの管理コンソールエラー解決方法について記載させてもらいました。
最後まで読んでいただきありがとうございます。

手順を細かに記載したので、難しい設定は無いと思いますので困っている方はぜひ試してみてください。
必要応じて本内容を更新していくので、定期的に覗いて頂ければ最新情報が転んでいるかもしれませんよっ

一筋縄ではいかないWSUS運用ですが、Windows 11の運用もWSUSで継続実施していくことになるかもしれませんので
この記事を見たことをきっかけに、エラー解決にトライしていただければ嬉しいです。

-Windows Update