はじめに
社内で管理しているWindows クライアントPC へ WindowsUpdate を綺麗に適用させたいのですが、コンピューターの一覧では警告マークがついたままの状態。「インストール済みまたは該当しない割合」は一向に100%になってくれません。確認のため、"100%"となっていないクライアントPCのいくつかで WindowsUpdate の更新プログラムのチェックをかけると「最新の状態です」と表示されます。いったいどうなっているのだ...
※いわゆる「プログラミング」以外の技術内容も投稿可能なようです。"WSUS"や"WindowsUpdate"のタグも用意されていることですし...
確認事項
BITS (Background Intelligent Transfer Service) の関連で失敗?
- WSUSコンソールから「すべての更新プログラム」一覧で、フィルタを「承認済み」「必要」として表示させてみます。赤いバツ印がついている場合は、インストールを承認したものの、MSの配布サーバーからダウンロードに失敗しています。
- C:\Program Files\Update Services\LogFiles フォルダにある "SoftwareDistribution.log" ファイルを確認します。もし
"YYYY-MM-DD HH:MM:SS.FFF UTC Error WsusService.26 ContentSyncAgent.JobError Download error: http://wsus.ds.download.windowsupdate.com/c/msdownload/update/software/secu/????????.cab failed in download: (-2145386477) 必要な HTTP プロトコルがサーバーでサポートされていません。バックグラウンド インテリジェント転送サービス (BITS) では、サーバーが Range プロトコル ヘッダーをサポートしている必要があります。"
といったエラーエントリが頻発している場合は、メッセージのとおりの原因で、ダウンロードに失敗しています(ファイアウォールアプライアンスやプロキシサーバーが対応していない場合に発生することが多そう)。WSUS が使用している DB に BITSを「Foregroundモード」で使用するように設定すると(要再起動)、このエラーを回避できます。赤バツ印だらけのWSUS一覧画面に戻って「ダウンロードの再試行」操作をお忘れなく。
sqlcmd -E -S \\.\pipe\MSSQL$MICROSOFT##SSEE\sql\query -- <- (2008R2まで) Windows Internal Database を使用している場合
sqlcmd -E -S \\.\pipe\microsoft##WID\tsql\query -- <- (2012以降) Windows Internal Database を使用している場合
-- SQL SERVER (EXPRESS) の場合は、それぞれのログインで接続
use SUSDB
go
update tbConfigurationC set BitsDownloadPriorityForeground=1
go