Microsoft WSUS および構成マネージャー SUPメンテナンスの完全なガイド

適用対象: Windows ServersWindows Server Update ServicesSystem Center Configuration Manager

はじめに


Meghan Stewart | Microsoft サポート エスカレーション エンジニア
Eric Ellis|Microsoftシニアサポート エスカレーション エンジニア 

サポートには、構成マネージャー環境の Windows Server Update Services (WSUS) メンテナンスに関する多くの質問が含まれているため、ここではその一部について説明します。

よくある質問には、「構成マネージャー環境で正常に実行する方法について」、または「このメンテナンスを実行する頻度について」といった質問が多く含まれています。 非常に意識の高い構成マネージャーの管理者でも、WSUS のメンテナンスをすべて実行する必要性について一般的に注意を払っている管理者は少ないものです。 ほとんどの場合、ソフトウェア更新ポイント (SUP) の前提条件であるため、WSUS サーバーをセットアップするのみです。 SUP のセットアップ後、WSUS コンソールを閉じて、ほぼ存在しないものとみなしています。 ただし、これは構成マネージャー クライアントの問題と、WSUS/SUP サーバーの全体的なパフォーマンスの問題の原因となる可能性があります。

このメンテナンスが必要であるということであれば、必要なメンテナンスとは何か、またメンテナンスが必要な頻度はどれくらいであるのかと疑問が残ることでしょう。 回答としては、毎月のメンテナンスの実行が必要です。 メンテナンスは非常に簡単で、最初から定期的にメンテナンスされている WSUS サーバーであれば時間はかかりませんが、WSUS が最後にメンテナンスされてから時間が経過している場合は、最初のクリーンアップでさらに時間を要したり、より困難になったりすることがあります。 それ以降の月からは、メンテナンスはより簡単/迅速に実行できるようになります。

重要な考慮事項:


  1. メンテナンス プロセスを開始する前に、この記事のすべての情報と手順を参照してください。
  2. WSUS をダウンストリーム サーバーとして設定する場合、WSUS サーバーは上から下に追加されますが、削除の際は下から上に削除されます。 更新プログラムの同期/追加を行うときは、まず、アップストリーム WSUS サーバーに移動してから、ダウンストリームサーバーに対して下方向にレプリケートします。 WSUS サーバーでクリーンアップを実行し、アイテムを削除するときは、階層の下部から開始し、上へ移動します。
  3. WSUS のメンテナンスは、 同じ層内の複数のサーバーで同時に実行できます。 そのためには、必ず 1 つの層を作成してから次の 1 つの層に移動してください。 以下に示すクリーンアップと再同期の手順は、レプリカ WSUS サーバーであるかどうかにかかわらず、すべての WSUS サーバーで実行する必要があります (WSUS サーバーがレプリカであるかどうか確認するためには、このセクション を参照)。
  4. のメンテナンス プロセス中に SUP が同期しないことを確認してください (これにより、すでに実行済みの一部の作業が失われる場合があります) 。 SUP 同期スケジュールを確認し、このプロセス中は一時的に手動に設定してください。

    選択オプションを有効にする同期」のスケジュールです。
  1. SUSDB を共有しないプライマリ サイトまたは CAS 以外に複数の SUP がある場合、サイトの最初の SUP と同期する WSUS サーバーは、該当サイトの 1 つ下の階層にあるものとみなします。 たとえば、CAS サイトには 2 つの SUP があります。 「New」という名前のものは、Microsoft Update で同期されます。 これは、上層 (Tier1) になります。 「2012」という名前のサーバーは「New」と同期され、2 番目の層にあるものと見なされて同時にクリーンアップできるので、プライマリ サイトの単一 SUP など、他のすべての Tier2 サーバーを同時に使用することができます。

    2 番目の層の新規作成] との「2012」の同期をという名前のサーバーとみなされます。

1. WSUS データベースをバックアップする

適切な方法を使用して、WSUS データベース (SUSDB) をバックアップします。 関連する情報については、「フル データベース バックアップを作成する (SQL Server)」を参照してください。

2. カスタム インデックスを作成する

以下の手順は、SUSDB データベースでカスタム インデックスを作成するために使用します。 これは 1 回限りのプロセスであり、以降のクリーンアップ操作でパフォーマンスを大幅に向上させることができるため、オプションの方法として推奨されます。

  1. SUSDB データベースの バックアップ があることを確認します。
  2. SQL Management Studio を使用して SUSDB データベースに接続するには、以下の 「WSUS データベースの最インデックス化」 セクションを参照してください。
  3. 2 つのカスタム インデックスを作成するには、次のスクリプトを SUSDB に対して実行します。
    -- Create custom index in tbLocalizedPropertyForRevisionUSE [SUSDB]CREATE NONCLUSTERED INDEX [nclLocalizedPropertyID] ON [dbo].[tbLocalizedPropertyForRevision](     [LocalizedPropertyID] ASC)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]-- Create custom index in tbRevisionSupersedesUpdateCREATE NONCLUSTERED INDEX [nclSupercededUpdateID] ON [dbo].[tbRevisionSupersedesUpdate] (      [SupersededUpdateID] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]

     

    メモ カスタム インデックスが既に作成されている場合、スクリプトを再度実行すると、次のようなエラーが発生します。
    Msg 1913, Level 16, State 1, Line 4The operation failed because an index or statistics with name 'nclLocalizedPropertyID' already exists on table 'dbo.tbLocalizedPropertyForRevision'.

先頭に戻る

3. WSUS データベースを再インデックス化する

WSUS 3.0 データベースの再インデックス化文書に記載の SQL スクリプトを使用して WSUS データベース (SUSDB) を再インデックス化します。

SUSDB が SQL Server または Windows Internal Database (WID) で実行されているかどうかによって、SUSDB に接続して再同期を実行する手順は異なります。 SUSDB が実行されている場所を確認するには、 HKLM\Software\Microsoft\Update Services\Server\Setup にあるWSUS サーバーのレジストリキー、および SQLServerName 値を確認します。

値にサーバー名またはサーバー\インスタンスが含まれる場合は、SQL Server 上で SUSDB が実行されます。 値に文字列 #SSEE または ##WID が含まれている場合は、Windows Internal Databaseで SUSDB が次のように実行されています。

SqlServerName SSEE

SqlServerName WID

Windows Internal Database (WID) に SUSDB がインストールされている場合
WID に SUSDB がインストールされている場合は、スクリプトを再インデックス化するために、SQL Management Studio Express をローカルにインストールする必要があります。 以下に、インストールする SQL Server Management Studio Express のバージョンを簡単に確認する方法を示します。

SQL Management Studio Express をンストールしたら、それを起動し、接続先のサーバー名を入力します。

  • OS が Windows Server 2012 以降の場合は、 \\.\pipe\MICROSOFT##WID\tsql\query を使用します。
  • OS が Windows Server 2012 より前のバージョンの場合は、「\\.\pipe\MSSQL$MICROSOFT##SSEE\sql\query」と入力します。

 

SQL Server に SUSDB がインストールされている場合
SUSDB がフル SQL Server にインストールされている場合は、SQL Server Management Studio を起動し、要求された場合はサーバーの名前を入力します (必要に応じてインスタンスも入力) 。

 

スクリプトの実行
SQL Server Management Studio または SQL Server Management Studio Express でスクリプトを実行するには、[ 新しいクエリ ] ボタンをクリックし、スクリプトをウィンドウに貼り付けて、[ 実行] をクリックします。 完了すると、[クエリが正常に実行されました] というメッセージがステータス バーに表示され、再構築されたインデックスに関連するメッセージが結果ペインに表示されます。

SQL ステートメントを実行します。

どのクエリが正常に実行された場合、ログになります。

先頭に戻る

4. 置き換えられた更新プログラムを拒否する

WSUS サーバーで代替更新プログラムを拒否し、クライアントがより効率的にスキャンできるようにします。 更新プログラムを拒否する前に、代替更新プログラムが展開されていて、それらが今後必要ないことを確認します。 構成マネージャーには別のクリーンアップが含まれており、指定された条件に基づいて代替更新プログラムの有効期限を失効させることができます。 より詳しい情報は以下の記事を参照してください。


次の SQL クエリを SUSDB データベースに対して実行して、代替更新プログラムの数をすばやく判断できます。 代替更新プログラムの数が大きい場合 (例: 1500 より大きい)、サーバーとクライアントの両方の側面で、各種ソフトウェア更新プログラムで発生する問題の原因となる可能性があります。

-- Find the number of superseded updatesSelect COUNT(UpdateID) from vwMinimalUpdate where IsSuperseded=1 and Declined=0

代替更新プログラムは、WSUSコンソールを使用して更新プログラムを手動で拒否することも、この PowerShell スクリプトを実行することもできます (右クリックして「対象をファイルに保存」を右クリック)。 単にスクリプトをダウンロードし、.txt ファイル拡張子を削除して、.PS1 拡張子で保存されていることを確認します。 このスクリプトは「現状」で提供しているもので、運用環境で使用する前にラボで入念にテストする必要があることに注意してください。 Microsoft では、スクリプトの使用方法については保証しません。

構成マネージャーで、代替更新プログラムを直ちに失効させるよう設定している場合 (下記を参照)、PowerShell スクリプトを使用して、代替更新プログラムをすべて拒否できます。 これは、構成マネージャー/WSUS 階層内のすべての 自律 WSUS サーバーで実行する必要があります。 これは、セカンダリ サイト SUP など、レプリカとして設定された WSUS サーバー上で実行する必要はありません。 下の 2 番目のスクリーンショットの設定を確認し、WSUS サーバーがレプリカであるかどうかを確認します。

オプションをオンに「すぐに期限切れに置き換えられたソフトウェアの更新」。

 

オプション [このサーバーはアップストリーム サーバーのレプリカです] をオンにします。

構成マネージャーで直ちに有効期限が失効されるよう設定されていない場合は、PowerShell スクリプトを実行して、除外する日数が、構成マネージャーの設定での代替更新プログラムが失効するまでの日数と一致させる必要があります。 この場合、SUP コンポーネントのプロパティが、有効期限が切れる代替更新プログラムが失効するまで 2 か月待機するように設定されているため、60 日になります。

「一定のソフトウェア更新プログラムが置き換えられるまで置き換えられたソフトウェアの更新を失効しない」オプションを選択します。

次のコマンド ラインは、PS スクリプトを実行できるさまざまな方法を示しています (スクリプトが WSUS サーバーで実行されている場合は、実際のSERVERNAME の代わりに LOCALHOST を使用できます)。

Decline-SupersededUpdatesWithExclusionPeriod.ps1 -UpdateServer SERVERNAME -Port 8530 –SkipDeclineDecline-SupersededUpdatesWithExclusionPeriod.ps1 -UpdateServer SERVERNAME -Port 8530 –ExclusionPeriod 60Decline-SupersededUpdatesWithExclusionPeriod.ps1 -UpdateServer SERVERNAME -Port 8530Decline-SupersededUpdatesWithExclusionPeriod.ps1 -UpdateServer SERVERNAME -UseSSL -Port 8531

SkipDecline および ExclusionPeriod 60 を使用して、WSUSサーバー上の更新に関する情報を収集し、拒否できる更新プログラムの数を確認します。

SkipDecline と ExclusionPeriod の 60 を実行する Windows PowerShell のウィンドウです。

–ExclusionPeriod 60 を使用してスクリプトを実行し、60 日を経過した代替更新プログラムを拒否します。

ExclusionPeriod の 60 を実行するだけで Windows PowerShell。

スクリプトの実行中に出力および進行状況インジケーターが表示されます。 スクリプトによって拒否されるすべての更新プログラムの一覧を含む、 SupersededUpdates.csv ファイルをメモします。

Windows PowerShell の出力進行状況のインジケーターです。

代替更新プログラムが拒否されている場合、最適なパフォーマンスを得るために、SUSDB を再インデックス化する必要があります。 関連する情報については、上記の「 WSUS データベースの再インデックス化」に関するセクションを参照してください。

先頭に戻る

5. WSUS サーバー クリーンアップ ウィザードを実行する

WSUS をしばらく運用していて、WSUS Server クリーンアップウィザードが実行されていない場合は、クリーンアップがタイム アウトすることがあります。 その場合は、最初に手順2と3に再インデックスし、上のチェックボックスのみをオンにしてクリーンアップを実行します(使用されていない更新プログラムおよび更新プログラムの変更)。 この処理には数分かかることがあります。 タイムアウトした場合は、再度実行してから、1つずつ他のオプションを実行する必要があります。 最後に、すべてのオプションをチェックして、「フルパス」を作成します。 タイムアウトが継続して発生する場合は、[ヘルプ]の「SQL代替」を参照してください。 メンテナンスを実行していなくてもMy WSUSは実行されており、またクリーンアップウィザードは下記のとおりタイムアウトになります。 サーバークリーンアップウィザードまたはSQL代替では、完了までに数時間または数日かかることがあります。

WSUSサーバークリーンアップウィザードは、WSUSコンソールから実行されます。 以下に示すように、[ オプション ]の下にあります。

WSUS サーバー クリーンアップ ウィザード。

詳細については、TechNetの記事「 サーバークリーンアップウィザードを使用する」を参照してください。

WSUS サーバー クリーンアップ ウィザード。

クリーンアップは、削除したアイテムの数を報告すると1回完了します。 この戻り値がWSUSサーバーに表示されない場合は、クリーンアップのタイムアウトを想定し、そのクリーンアップを再度開始する必要があるか、または SQL代替を使用する必要があります。

完了時の WSUS サーバー クリーンアップ ウィザード。

更新プログラムを無効にすると、最適なパフォーマンスを得るために、SUSDBを再インデックスする必要があります。 関連する情報については、上記の「 WSUSデータベースの再インデックス 」を参照してください。

先頭に戻る

6. トラブルシューティング

助けてください! 私の WSUS は何年もメンテナンスされていない状態で何年も実行されており、クリーンアップウィザードはタイムアウトし続けます。

次の 2 つのオプションがあります。

  1. WSUS を新しいデータベースに再インストールします。 これに関連する多くの注意事項は、最初の同期の長さと、SUSDB に対するクライアントのフルスキャンと、差分スキャンをふくんでいます。
  2. SUSDB データベースのバックアップがあることを確認してから、インデックスの再作成を実行します。 この作業が完了したら、次の SQL Server Management Studio または SQL Server Management Studio Express を実行します。 この作業が完了したら、メンテナンスを実行するための上記のすべての手順を実行します。 ストアド プロシージャは未使用の更新と改定の更新のみを削除するため、この最後の手順が必要です。
	DECLARE @var1 INT	DECLARE @msg nvarchar(100)	CREATE TABLE #results (Col1 INT)	INSERT INTO #results(Col1) EXEC spGetObsoleteUpdatesToCleanup	DECLARE WC Cursor	FOR	SELECT Col1 FROM #results	OPEN WC	FETCH NEXT FROM WC	INTO @var1	WHILE (@@FETCH_STATUS > -1)	BEGIN SET @msg = 'Deleting' + CONVERT(varchar(10), @var1)	RAISERROR(@msg,0,1) WITH NOWAIT EXEC spDeleteUpdate @localUpdateID=@var1	FETCH NEXT FROM WC INTO @var1 END		CLOSE WC	DEALLOCATE WC		DROP TABLE #results

WSUS サーバーへの接続時に Decline-SupersededUpdatesWithExclusionPeriod.ps1 スクリプトの実行がタイムアウトするか、実行中に 401 エラーが発生する

PSスクリプトを使用して更新プログラムを適用するときにエラーが発生した場合は、代替SQLスクリプトをSUDBに対して実行できます。

  1. Configuration ManagerをWSUSと共に使用している場合は、ソフトウェアの更新ポイントコンポーネントのプロパティとSupersedenceルールを確認して、置き換えの更新の有効期限(例 すぐに、または X か月後にをメモに記載)を確認します。

    WSUS 更新プログラムの承認の画面です。
  2. SUSDBデータベースをバックアップしていない場合は、続行する前に、SUSDBデータベースをバックアップ してから、これを行ってください。
  3. SQL Management Studioを使用してSUSDBに接続します。
  4. 次のクエリを実行します。 DECLARE @thresholdDays INT = 90 を含む行の数の90は、#1より前の行数、およびSupersedenceルールに構成されている月数と一致する日数に対応します。 有効期限がすぐに切れるように設定されている場合は、SQLクエリの値の@thresholdDaysをゼロに設定する必要があります。
    -- Decline superseded updates in SUSDB; alternative to Decline-SupersededUpdatesWithExclusionPeriod.ps1DECLARE @thresholdDays INT = 90 -- Specify the number of days between today and the release date for which the superseded updates must not be declined (i.e., updates older than 90 days). This should match configuration of supersedence rules in SUP component properties, if ConfigMgr is being used with WSUS.DECLARE @testRun BIT = 0 -- Set this to 1 to test without declining anything.-- There shouldn't be any need to modify anything after this line.DECLARE @uid UNIQUEIDENTIFIERDECLARE @title NVARCHAR(500)DECLARE @date DATETIMEDECLARE @userName NVARCHAR(100) = SYSTEM_USERDECLARE @count INT = 0DECLARE DU CURSOR FOR	SELECT MU.UpdateID, U.DefaultTitle, U.CreationDate FROM vwMinimalUpdate MU	JOIN PUBLIC_VIEWS.vUpdate U ON MU.UpdateID = U.UpdateIdWHERE MU.IsSuperseded = 1 AND MU.Declined = 0 AND MU.IsLatestRevision = 1	AND MU.CreationDate < DATEADD(dd,-@thresholdDays,GETDATE())ORDER BY MU.CreationDatePRINT 'Declining superseded updates older than ' + CONVERT(NVARCHAR(5), @thresholdDays) + ' days.' + CHAR(10)OPEN DUFETCH NEXT FROM DU INTO @uid, @title, @dateWHILE (@@FETCH_STATUS > - 1)BEGIN	SET @count = @count + 1	PRINT 'Declining update ' + CONVERT(NVARCHAR(50), @uid) + ' (Creation Date ' + CONVERT(NVARCHAR(50), @date) + ') - ' + @title + ' ...'	IF @testRun = 0		EXEC spDeclineUpdate @updateID = @uid, @adminName = @userName, @failIfReplica = 1	FETCH NEXT FROM DU INTO @uid, @title, @dateENDCLOSE DUDEALLOCATE DUPRINT CHAR(10) + 'Attempted to decline ' + CONVERT(NVARCHAR(10), @count) + ' updates.'
  5. 進行状況を確認するには、[結果]ペインの[メッセージ]タブを監視します。


拒否した中の1つの更新プログラムが必要な場合は。
Configuration Managerでこれらのいずれかの拒否した更新プログラムが必要な場合は、更新プログラムを右クリックし、「 承認」を選択することで、WSUSに戻すことができます。 承認を[ 承認しない]に変更し、SUPを再度実行して更新を再度実行します。

WSUS 更新プログラムの承認の画面です。

WSUSに更新プログラムがない場合は、期限切れまたは削除されていない場合は、Microsoft Update Catalogからインポートできます。

WSUS で更新プログラムをインポートする方法。

先頭に戻る

7. WSUS メンテナンスの自動化

多くの場合、WSUSのメンテナンスタスクを自動化できるかどうか、また、最初にいくつかの要件が満たされていることを前提としています。

  1. WSUSのクリーンアップを実行していない場合は、最初の2つのクリーンアップを手動で実行する必要があります。 2回目の手動クリーンアップは、更新と更新の変更については30日かかるため、最初のクリーンアップから30日たってから実行する必要があります。 2 回目のクリーンアップが行われない限り、特定の理由で自動化できない理由があります。 初のクリーンアップはおそらく通常よりも長く実行されるため、このメンテナンスに通常どのくらいの時間がかかるか判断できません。一方、2 回目のクリーンアップは、あなたのコンピュータにとって何が正常であるかを示すより良い指標です。 スケジュールのタイミングを決定できるように、各ステップがベースラインとしてどれくらいの時間がかかるかを把握する必要があるので(私は約 30 分の 「余裕」を持つのも好きです)、これは重要です。
  2. ダウンストリームの WSUS サーバーがある場合は、まずそれらのサーバーでメンテナンスを実行し、次にアップストリームのサーバーを実行する必要があります。
  3. SUSDB の再インデックスをスケジュールするには、フルバージョンの SQL Server が必要です。 Windows Internal Database(WID)には、SQL Server Management Studio Express を介してメンテナンスタスクをスケジュールする機能はありません。 ですが、WID が使用されている場合は、前述の SQLCMD と共にタスクスケジューラを使用できます。 このルートを利用する場合、このメンテナンス期間中に WSUS サーバー/SUP を同期しないでください! もし同期すると、ダウンストリームサーバーが、クリーンアップしようとしたすべての更新プログラムを再同期する可能性が非常に高くなります。 私は AM 同期の前にこれを夜通し予定してるので、私は同期が実行される前にそれをチェックする時間があります。

必須/有用リンク:


タスクスケジューラでのWSUSクリーンアップタスクの設定
この手順の基本的な説明とトラブルシューティングについては、手順は下記で説明しますが、 こちらを参照してください。

  1. [タスクスケジューラ]を開き、 [タスクを作成]を選択します。 [ 全般 ]タブで、PowerShellスクリプトを実行したいユーザーのタスク名を設定し、(ほとんどのユーザーがサービスアカウントを使用している場合)、[ ユーザーがログオンしているかどうか]を選択して、必要に応じて説明を追加します。

    WSUS の [タスクの作成] 画面。
  2. [ アクション ]タブで、新しいアクションを追加し、実行するプログラム/スクリプトを指定します。 この場合は、PowerShellを使用して、実行するPS1ファイルを指定する必要があります。 ここでは、スクリプトを使用します。 ログを記録する場合は、次のようにスクリプトの最後の行を読み取ります。
    $cleanupManager.PerformCleanup($cleanupScope)| Out-File c:\wsus\wsusclean.txt

    保存時に、タスクスケジューラでFYI/warningを取得しますが、これは問題なく、無視できます。

    WSUS によってタスクを開始するスクリプト行が追加されます。

  3. 月に一度スケジュールしたい[ トリガー ]タブのの下にあるスケジュールを設定します。 再度、 すべてのクリーンアップの間にWSUSを同期および再インデックスタイムしないようにしてください。 このステートメントは、1つの記事に3回、太字にする必要があります。

    WSUS のタスクの [トリガーの編集] を設定します。

  4. 微調整したい他の条件や設定も設定します。 タスクを保存すると、ユーザーとして「実行」の資格情報の入力を求められることがあります。

  5. これらの手順を使用して、3か月ごとに実行するDecline-SupersededUpdatesWithExclusionPeriod.ps1 スクリプトを構成することもできます。 通常、これは他のクリーンアップ手順より前に実行されるように設定しますが、手動で実行した後に、正常に完了したことを確認します。 3か月 に一回一日曜日の午前12:00に実行します。

SQLCMD&Taskスケジューラを使用したWIDのSUSDB再インデックスの設定

  1. ここ に.sqlファイルとしてスクリプトを保存します(例: SUSDBMaint.sql)

  2. 基本的なタスクを作成し、名前を指定します。

    WSUS の [基本タスクの作成ウィザード] 画面。

  3. クリーンアップの実行が終了する予定の30分後に、このタスクを開始します。 マイクリーンアップは第一日曜日の午前1:00に実行されます。 実行するのに約30分かかるため、再インデックスを開始する前に30分追加します。 つまり、ここで示すように、一日曜日の午前2:00に対してこのタスクをスケジュールします。

    [基本タスクの作成ウィザード] でそのタスクの頻度を設定します。

  4. プログラムを起動するアクションを選択します。 [ プログラム/スクリプト ]ボックスに次のように入力します。 –i パラメーターの後に指定したファイルが、手順1で保存したSQLスクリプトのパスとなり、 –o パラメーターを指定してログを配置します。 次に例を示します:

    “C:\Program Files\Microsoft SQL Server\110\Tools\Binn\SQLCMD.exe" -S \\.\pipe\Microsoft##WID\tsql\query -i C:\WSUS\SUSDBMaint.sql -o c:\WSUS\reindexout.txt
    [基本タスクの作成ウィザード] でのスクリプトの見え方。

     
  5. クリーンアップタスクを作成したときに表示される警告と同じような警告が表示されます。 [ はい ]をクリックして引数を受け入れ、次に[ 完了 ]をクリックして以下の処理を適用します。

    タスク スケジューラの確認ポップアップ ウィンドウ。

  6. スクリプトをテストするには、そのスクリプトを強制的に実行してエラーを確認します。 問題が発生すると、その理由が記録されます。 通常、タスクを実行しているアカウントに適切な権限がないか、WIDサービスが開始されていない場合にタスクは失敗します。
     

WID SUSDB 以外のための SQLでの基本的なスケジュールメンテナンス作業の設定

  1. SQL Server Management Studioを開き、WSUSに接続します。 [管理]を展開し、[メンテナンスプラン]を右クリックして、[新しいメンテナンスプラン]を選択します。 計画に名前を付けます。

    WSUS のメンテナンス プランの名前を入力します。
  2. [ サブプラン1 ]をクリックし、ツールボックスがコンテキストにあることを確認します。

    ツールボックスがコンテキスト内であることを確認します。
  3. タスク [実行T-SQL Statement Task]をドラッグアンドドロップします。

    タスク [T-SQL ステートメントの実行タスク] をドラッグしてドロップします。
  4. もう一度右クリックして [編集] を選択します。 WSUS再インデックススクリプトをコピーして貼り付け、[OK]をクリックします。

    WSUS のインデックスの再作成スクリプトをコピーして貼り付け、[OK] をクリックします。
  5. クリーンアップの実行が終了する予定の30分後に、このタスクを実行します。 マイクリーンアップは第一日曜日の午前1:00に実行されます。 実行するのに約30分かかるため、再インデックスを開始する前に30分追加します。 つまり、一日曜日の午前2時にこのタスクを実行するようにスケジュールします。

    WSUS の [新しいジョブ スケジュール] 画面
  6. メンテナンス計画を作成している間は、計画にSUSDBのバックアップも追加することを検討してください。 通常は、最初にバックアップを行い、次に再インデックスします。 また、スケジュールに時間がかかる場合があります。


認証方法の組み合わせ
階層でこの処理を実行する場合、WSUSのクリーンアップは階層の下部から実行する必要がありますが、代わりにスクリプトを使用して更新プログラムを適用し直すことができます。

実際のクリーンアップで同期を行うことはできないため、すべてのタスクを夜間にスケジュール/完了するようにして、次回のスケジュールされた同期前に、次の朝にログ経由で完了を確認します。 障害が発生した場合は、その問題を特定し解決したらメンテナンスは翌晩に再スケジュールできます。

これらのタスクは環境に応じて高速になったり遅くなったりするため、スケジュールのタイミングは反映されます。 ラボ環境が通常の運用環境よりも遅い場合は、より高速になります。 階層 2 が階層 3 と数分オーバーラップしても問題が発生しないため、辞退スクリプトのタイミングには少し積極的です。

個人用同期は、実行するようにスケジュールされていません。 これにより、階層 2 から階層 3 レプリカの WSUS サーバーに誤って辞退が送信されることがなくなります。 クリーンアップを実行する前に、辞退スクリプトが確実に終了するようにしたいため、階層 3 の辞退と階層 3 のクリーンアップの間に余分な時間をかけました。

一般的な質問を次に示します。 同期していないため、すべてのクリーンアップとインデックスの再作成を同時に実行できないのはなぜですか。 回答としては実行できますがお勧めしません。世界中の同僚が同期を実行する必要がある場合は、このスケジュールを使用して、WSUS で孤立した更新プログラムのリスクを最小限に抑えると、翌日の夜に完了するようにスケジュールを立てて再実行できます。

時刻   タスク
0:00 Tier1-拒否  
0:15 Tier2-拒否  
0:30 Tier3-拒否  
1:00 Tier3 WSUSクリーンアップ  
2:00 Tier3再インデックス Tier2 WSUSクリーンアップ
3:00 レベル 1- クリーンアップ レベル 2- 再インデックス
4:00 レベル 1- 再インデックス  


Microsoft Configuration Manager での SUP のメンテナンスの詳細については、以下の記事を参照してください。

除外期間に置き換えられた更新プログラムを拒否するスクリプトを提供してくれた Vinay Pamnani The Scripting Guy に感謝します

Meghan Stewart | Microsoft サポート エスカレーション エンジニア 
Eric Ellis|Microsoftシニアサポート エスカレーション エンジニア 

先頭に戻る