다음을 통해 공유


Microsoft WSUS 및 Configuration Manager SUP 유지 관리에 대한 전체 가이드

이 문서에서는 Configuration Manager 환경에 대한 WSUS 유지 관리에 대한 몇 가지 일반적인 질문을 다룹니다.

원래 제품 버전: Windows Server, Windows Server Update Services, Configuration Manager
원래 KB 번호: 4490644

소개

Configuration Manager 환경에서 이 유지 관리를 제대로 실행해야 하는 방법 또는 이 유지 관리를 얼마나 자주 실행해야 하는지에 대한 질문이 자주 있습니다. 양심적 Configuration Manager 관리자가 WSUS 유지 관리를 전혀 실행해야 한다는 사실을 인식하지 못하는 것은 드문 일이 아닙니다. 대부분의 경우 SUP(소프트웨어 업데이트 지점)의 필수 구성 요소이므로 WSUS 서버를 설정하기만 하면 됩니다. SUP가 설정되면 WSUS 콘솔을 닫고 존재하지 않는 척합니다. 아쉽게도 Configuration Manager 클라이언트 및 WSUS/SUP 서버의 전반적인 성능에 문제가 될 수 있습니다.

이 유지 관리를 수행해야 한다는 것을 이해하면 수행해야 하는 유지 관리와 수행해야 하는 빈도가 궁금합니다. 대답은 월별 유지 관리를 수행해야 한다는 것입니다. 유지 관리는 쉽고 처음부터 잘 유지 관리된 WSUS 서버에 오래 걸리지 않습니다. 그러나 WSUS 유지 관리가 완료된 이후 시간이 지나면 정리가 더 어렵거나 시간이 많이 소요될 수 있습니다. 이후 몇 달 동안 훨씬 쉽고 빠를 것입니다.

간결한 단계 및 자동 스크립트에 대한 자세한 내용은 수동 및 자동 WSUS 데이터베이스 유지 관리를 참조 하세요.

현재 분기 버전 1906 이상 버전 Configuration Manager 지원하면서 WSUS 유지 관리

Configuration Manager 현재 분기 버전 1906 이상을 사용하는 경우 최상위 사이트의 소프트웨어 업데이트 지점 구성에서 WSUS 유지 관리 옵션을 사용하도록 설정하여 각 동기화 후 정리 절차를 자동화하는 것이 좋습니다. WSUS 데이터베이스의 백업 및 다시 인덱싱을 제외하고 이 문서에 설명된 모든 정리 작업을 효과적으로 처리합니다. 일정에 따라 WSUS 데이터베이스의 다시 인덱싱과 함께 WSUS 데이터베이스의 백업을 자동화해야 합니다.

소프트웨어 업데이트 지점 구성 요소 속성 창 WSUS 유지 관리 옵션의 스크린샷.

Configuration Manager 소프트웨어 업데이트 유지 관리에 대한 자세한 내용은 소프트웨어 업데이트 유지 관리를 참조하세요.

중요 사항

참고 항목

Configuration Manager 버전 1906에 추가된 유지 관리 기능을 활용하는 경우 Configuration Manager 각 동기화 후 정리를 처리하므로 이러한 항목을 고려할 필요가 없습니다.

  1. 유지 관리 프로세스를 시작하기 전에 이 문서의 모든 정보 및 지침을 읽어보세요.

  2. 다운스트림 서버와 함께 WSUS를 사용하는 경우 WSUS 서버가 위에서 아래로 추가되지만 맨 아래에서 위로 제거해야 합니다. 업데이트를 동기화하거나 추가할 때 먼저 업스트림 WSUS 서버로 이동한 다음 다운스트림 서버로 복제합니다. 정리를 수행하고 WSUS 서버에서 항목을 제거할 때 계층의 맨 아래에서 시작해야 합니다.

  3. WSUS 유지 관리는 동일한 계층의 여러 서버에서 동시에 수행할 수 있습니다. 이렇게 하면 다음 계층으로 이동하기 전에 한 계층이 완료되었는지 확인합니다. 아래에 설명된 정리 및 다시 인덱스 단계는 복제본 WSUS 서버인지 여부에 관계없이 모든 WSUS 서버에서 실행되어야 합니다. WSUS 서버가 복제본인지 확인하는 방법에 대한 자세한 내용은 대체된 업데이트 거부를 참조하세요.

  4. 이미 수행된 일부 작업이 손실될 수 있으므로 유지 관리 프로세스 중에 SUP가 동기화되지 않도록 합니다. SUP 동기화 일정을 확인하고 이 프로세스 중에 일시적으로 수동으로 설정합니다.

    일정 설정에서 동기화 사용 스크린샷.

  5. SUSDB를 공유하지 않는 기본 사이트 또는 CAS(중앙 관리)의 SUP가 여러 개 있는 경우 사이트의 첫 번째 SUP와 동기화하는 WSUS 서버를 사이트 아래 계층에 있는 것으로 간주합니다. 예를 들어 CAS 사이트에는 다음 두 개의 SUP가 있습니다.

    • New라는 이름은 Microsoft 업데이트와 동기화되며, 내 최상위 계층(계층 1)이 됩니다.
    • 이름이 “2012”인 서버가 “New”와 동기화되고 두 번째 티어에서 고려됩니다. 기본 사이트의 단일 SUP와 같은 다른 모든 Tier2 서버를 동시에 정리할 수 있습니다.

    두 가지 예제 SUP의 스크린샷.

WSUS 유지 관리 수행

적절한 WSUS 유지 관리에 필요한 기본 단계는 다음과 같습니다.

  1. WSUS 데이터베이스 백업
  2. 사용자 정의 필드 인덱스 만들기
  3. WSUS 데이터베이스 다시 인덱싱
  4. 대체된 업데이트 거절 및 유지 관리 실행
  5. WSUS 서버 정리 마법사.

WSUS 데이터베이스 백업

원하는 메서드를 사용하여 WSUS 데이터베이스(SUSDB)를 백업합니다. 자세한 내용은 전체 데이터베이스 백업 만들기를 참조하세요.

사용자 정의 필드 인덱스 만들기

이 프로세스는 선택 사항이지만 권장되므로 후속 정리 작업 중에 성능이 크게 향상됩니다.

Configuration Manager 현재 분기 버전 1906 이상을 사용하는 경우 Configuration Manager 사용하여 인덱스를 만드는 것이 좋습니다. 인덱스를 만들려면 최상위 사이트의 소프트웨어 업데이트 지점 구성에서 WSUS 데이터베이스 옵션에 비클러스터형 인덱스 추가 옵션을 구성합니다.

Configuration Manager의 SUP 구성에서 비-클러스터 인덱스를 WSUS 데이터베이스에 추가 옵션의 위치.

이전 버전의 Configuration Manager 또는 독립 실행형 WSUS 서버를 사용하는 경우 다음 단계에 따라 SUSDB 데이터베이스에 사용자 지정 인덱스를 만듭니다. 각 SUSDB에 대해 일회성 프로세스입니다.

  1. SUSDB 데이터베이스의 백업 이 있는지 확인합니다.

  2. SQL Management Studio를 사용하여 WSUS 데이터베이스 다시 인덱싱 섹션에 설명된 것과 동일한 방식으로 SUSDB 데이터베이스에 연결합니다.

  3. SUSDB에 대해 다음 스크립트를 실행하여 두 개의 사용자 지정 인덱스를 만듭니다.

    -- Create custom index in tbLocalizedPropertyForRevision
    USE [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 tbRevisionSupersedesUpdate
    CREATE 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]
    

    사용자 지정 인덱스를 이전에 만든 경우 스크립트를 다시 실행하면 다음과 유사한 오류가 발생합니다.

    메시지 1913, 수준 16, 상태 1, 줄 1
    이름이 'nclLocalizedPropertyID'인 인 인덱스 또는 통계가 'dbo.tbLocalizedPropertyForRevision' 테이블에 이미 있기 때문에 작업이 실패했습니다.

WSUS 데이터베이스 다시 인덱싱

WSUS 데이터베이스(SUSDB)를 다시 인덱 싱하려면 WSUS 데이터베이스 T-SQL 스크립트를 다시 인덱싱 합니다.

SUSDB에 연결하고 다시 인덱스를 수행하는 단계는 SUSDB가 SQL Server 또는 WID(Windows 내부 데이터베이스)에서 실행되는지 여부에 따라 다릅니다. SUSDB가 실행되는 위치를 확인하려면 하위 키에 SQLServerName 있는 HKEY_LOCAL_MACHINE\Software\Microsoft\Update Services\Server\Setup WSUS 서버의 레지스트리 항목 값을 확인합니다.

값에 서버 이름 또는 server\instance만 포함된 경우 SUSDB는 SQL Server 실행됩니다. 값에 문자열 ##SSEE 또는 ##WID 문자열이 포함된 경우 다음과 같이 SUSDB가 WID에서 실행됩니다.

SqlServerName-SSEE의 스크린샷.

SqlServerName-WID의 스크린샷.

WID에 SUSDB가 설치된 경우

SUSDB가 WID에 설치된 경우 SQL Server Management Studio Express를 로컬로 설치하여 다시 인덱싱 스크립트를 실행해야 합니다. 설치할 SQL Server Management Studio Express 버전을 쉽게 확인할 수 있는 방법은 다음과 같습니다.

  • Windows Server 2012 버전 이상

    • C:\Windows\WID\Log 버전 번호가 포함된 오류 로그로 이동하여 찾습니다.

    • SQL Server 버전, 에디션 및 업데이트 수준과 해당 구성 요소를 확인하는 방법 이 값은 WID가 실행 중인 SP(서비스 팩) 수준을 알려줍니다. Microsoft 다운로드 센터에서 SQL Server Management Studio Express를 검색할 때 SP 수준을 포함합니다.

  • Windows Server 2008 R2용(KB3137691)

    • 메모장을 사용하여 C:\Windows\SYSMSI\SSEE\MSSQL.2005\MSSQL\LOG 마지막 오류 로그로 이동하여 엽니다. 맨 위에 버전 번호가 있습니다(예: 9.00.4035.00 x64). SQL Server 버전, 에디션 및 업데이트 수준과 해당 구성 요소를 확인하는 방법 이 버전 번호는 실행 중인 서비스 팩 수준을 알려줍니다. Microsoft 다운로드 센터에서 SQL Server Management Studio Express를 검색할 때 SP 수준을 포함합니다.

SQL Server Management Studio Express를 설치한 후 시작하고 연결할 서버 이름을 입력합니다.

  • OS가 Windows Server 2012 이상 버전인 경우 .\\.\pipe\MICROSOFT##WID\tsql\query
  • OS가 Windows Server 2012 이전인 경우 입력합니다\\.\pipe\MSSQL$MICROSOFT##SSEE\sql\query.

WID의 경우 SSMS(SQL Server Management Studio)를 사용하여 SUSDB에 연결하려고 할 때 다음과 유사한 오류가 발생하는 경우 관리자 권한으로 실행 옵션을 사용하여 SSMS를 시작해 보세요.

서버에 연결할 수 없음 오류의 스크린샷

SQL Server SUSDB가 설치된 경우

전체 SQL Server SUSDB가 설치된 경우 SQL Server Management Studio 시작하고 메시지가 표시되면 서버 이름(필요한 경우 인스턴스)을 입력합니다.

또는 다시 인덱스 스크립트를 실행하는 데 호출 sqlcmd 된 유틸리티를 사용할 수 있습니다. 자세한 내용은 릴리스 노트를 참조하세요.

스크립트 실행

SQL Server Management Studio 또는 SQL Server Management Studio Express에서 스크립트를 실행하려면 새 쿼리를 선택하고 창에 스크립트를 붙여넣은 다음 실행을 선택합니다. 완료되면 쿼리가 성공적으로 실행된 메시지가 상태 표시줄에 표시됩니다. 또한 결과 창에는 다시 빌드된 인덱스와 관련된 메시지가 포함됩니다.

SQL 문을 실행합니다.

성공한 로그의 스크린샷.

대체된 업데이트 거절 및 유지 관리 실행

클라이언트가 보다 효율적으로 검색할 수 있도록 WSUS 서버에서 대체된 업데이트를 거부합니다. 업데이트를 거부하기 전에 대체 업데이트가 배포되고 대체된 업데이트가 더 이상 필요하지 않은지 확인합니다. Configuration Manager 지정된 조건에 따라 대체된 업데이트를 만료할 수 있는 별도의 정리를 포함합니다. 자세한 내용은 다음 문서를 참조하세요.

다음 SQL 쿼리를 SUSDB 데이터베이스에 대해 실행하여 대체된 업데이트 수를 빠르게 확인할 수 있습니다. 교체된 업데이트 수가 1,500개보다 많은 경우 서버와 클라이언트 쪽 모두에서 다양한 소프트웨어 업데이트 관련 문제가 발생할 수 있습니다.

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

Configuration Manager 현재 분기 버전 1906 이상 버전을 사용하는 경우 최상위 사이트에 대한 소프트웨어 업데이트 지점 구성의 대체 규칙 옵션에 따라 WSUS에서 만료된 업데이트 거부를 사용하도록 설정하여 대체된 업데이트를 자동으로 거부하는 것이 좋습니다.

WSUS 유지 관리 탭의 대체 규칙 옵션에 따른 WSUS의 만료된 업데이트 거부 스크린샷

이 옵션을 사용하면 동기화 프로세스가 완료된 후 WsyncMgr.log 파일을 검토하여 거부된 업데이트 수를 확인할 수 있습니다. 이 옵션을 사용하는 경우 이 섹션의 뒷부분에 설명된 스크립트를 사용할 필요가 없습니다(수동으로 실행하거나 일정에 따라 실행할 작업으로 설정).

독립 실행형 WSUS 서버 또는 이전 버전의 Configuration Manager를 사용하는 경우 WSUS 콘솔을 사용하여 대체된 업데이트를 수동으로 거부할 수 있습니다. 또는 이 PowerShell 스크립트를 실행할 수 있습니다. 그런 다음 스크립트를 복사하여 Decline-SupersededUpdatesWithExclusionPeriod.ps1 스크립트 파일로 저장합니다.

참고 항목

이 스크립트는 있는 그대로 제공됩니다. 프로덕션 환경에서 사용하기 전에 랩에서 완전히 테스트해야 합니다. Microsoft는 어떤 방식으로든 이 스크립트의 사용에 대해 어떠한 보장도 하지 않습니다. 항상 매개 변수를 사용하여 스크립트를 -SkipDecline 먼저 실행하여 대체된 업데이트 수에 대한 요약을 가져옵니다.

Configuration Manager 대체 업데이트 즉시 만료로 설정된 경우(아래 참조) PowerShell 스크립트를 사용하여 대체된 모든 업데이트를 거절할 수 있습니다. Configuration Manager/WSUS 계층 구조의 모든 자치 WSUS 서버에서 수행해야 합니다.

대체 규칙 탭에서 즉시 만료 대체된 업데이트 옵션의 스크린샷.

보조 사이트 SUP와 같이 복제본으로 설정된 WSUS 서버에서 PowerShell 스크립트를 실행할 필요가 없습니다. WSUS 서버가 복제본인지 확인하려면 원본 업데이트 설정을 확인합니다.

원본 및 프록시 서버 업데이트 옵션의 스크린샷.

업데이트가 Configuration Manager 즉시 만료되도록 구성되지 않은 경우 대체된 업데이트가 만료되려면 Configuration Manager 설정과 일치하는 제외 기간으로 PowerShell 스크립트를 실행해야 합니다. 이 경우 SUP 구성 요소 속성이 교체된 업데이트가 만료되기 2개월 전에 대기하도록 구성된 후 60일이 됩니다.

대체된 업데이트가 만료되는 월의 스크린샷.

다음 명령줄에서는 PowerShell 스크립트를 실행할 수 있는 다양한 방법을 보여 줍니다.

참고 항목

WSUS 서버에서 스크립트를 실행하는 경우 실제 SERVERNAME스크립트 대신 사용합니다LOCALHOST.

Decline-SupersededUpdatesWithExclusionPeriod.ps1 -UpdateServer SERVERNAME -Port 8530 –SkipDecline

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

Decline-SupersededUpdatesWithExclusionPeriod.ps1 -UpdateServer SERVERNAME -Port 8530

Decline-SupersededUpdatesWithExclusionPeriod.ps1 -UpdateServer SERVERNAME -UseSSL -Port 8531

WSUS 서버의 업데이트 및 -ExclusionPeriod 60 거부될 수 있는 업데이트 수에 대한 정보를 수집하기 위해 스크립트 -SkipDecline 를 실행합니다.

SkipDecline 및 ExclusionPeriod 60을 실행하는 Windows PowerShell 창.

-ExclusionPeriod 60을 사용하여 스크립트를 실행하여 60일보다 오래된 대체 업데이트를 거부합니다.

ExclusionPeriod 60이 실행 중인 Windows PowerShell 창의 스크린샷.

스크립트가 실행되는 동안 출력 및 진행률 표시기가 표시됩니다. 스크립트에서 거부된 모든 업데이트 목록이 포함된 SupersededUpdates.csv 파일을 확인합니다.

Windows PowerShell 출력 및 진행률 표시기의 스크린샷

참고 항목

위의 PowerShell 스크립트를 사용하여 대체된 업데이트를 거부하려고 할 때 문제가 발생하는 경우 WSUS 서버에 연결할 때 Decline-SupersededUpdatesWithExclusionPeriod.ps1 스크립트 시간 초과 실행 섹션을 참조하거나 문제 해결 단계를 실행하는 동안 401 오류가 발생합니다 .

대체된 업데이트가 거부된 후 최상의 성능을 위해 SUSDB를 다시 인덱싱해야 합니다. 관련 정보는 WSUS 데이터베이스 다시 인덱스를 참조하세요.

WSUS 서버 정리 마법사.

WSUS 서버 정리 마법사는 다음 항목을 정리하는 옵션을 제공합니다.

  • 사용되지 않는 업데이트 및 업데이트 수정 버전(사용되지 않는 업데이트라고도 함)
  • 서버에 연결하지 않는 컴퓨터
  • 불필요한 업데이트 파일
  • 만료된 업데이트
  • 대체된 업데이트

Configuration Manager 환경에서는 모든 WSUS 보고 이벤트 만들기 또는 WSUS 상태 보고 이벤트 만들기 옵션이 소프트웨어 업데이트 동기화 설정에서 선택되지 않는 한 Configuration Manager가 소프트웨어 업데이트 콘텐츠 및 디바이스를 관리하므로 서버에 연결하지 않는 컴퓨터 및 불필요한 업데이트 파일 옵션은 관련이 없습니다. 이러한 옵션 중 하나를 구성한 경우 WSUS 서버 정리를 자동화하여 이러한 두 옵션을 정리하는 것이 좋습니다.

Configuration Manager 현재 분기 버전 1906 이상을 사용하는 경우 대체 규칙 옵션에 따라 WSUS에서 만료된 업데이트 거부를 사용하도록 설정하면 Configuration Manager 지정된 대체 규칙에 따라 만료된 업데이트 및 대체된 업데이트의 거부가 처리됩니다. Configuration Manager 현재 분기 버전 1906에서 WSUS 데이터베이스 옵션에서 사용되지 않는 업데이트 제거를 사용하도록 설정하면 사용되지 않는 업데이트 및 업데이트 수정(사용되지 않는 업데이트)의 정리가 처리됩니다. 최상위 사이트의 소프트웨어 업데이트 지점 구성에서 이러한 옵션을 사용하도록 설정하여 Configuration Manager WSUS 데이터베이스를 정리할 수 있도록 하는 것이 좋습니다.

WSUS 데이터베이스 옵션에서 사용되지 않는 업데이트 제거 스크린샷

이전에 WSUS 데이터베이스에서 사용되지 않는 업데이트를 정리한 적이 없는 경우 이 작업이 시간 초과될 수 있습니다. 자세한 내용은 WsyncMgr.log를 검토하고 도움말에 지정된 SQL 스크립트를 수동으로 실행할 수 있습니다. 내 WSUS는 유지 관리가 수행되지 않고 수년 동안 실행되어 왔으며 정리 마법사는 타이밍을 한 번 유지하므로 Configuration Manager 후속 시도가 성공적으로 실행될 수 있습니다. Configuration Manager WSUS 정리 및 유지 관리에 대한 자세한 내용은 문서를 참조하세요.

독립 실행형 WSUS 서버의 경우 또는 이전 버전의 Configuration Manager 사용하는 경우 WSUS 정리 마법사를 주기적으로 실행하는 것이 좋습니다. WSUS 서버 정리 마법사를 실행한 적이 없으며 WSUS가 한동안 프로덕션에 있는 경우 정리 시간이 초과할 수 있습니다. 이 경우 2단계3단계 를 먼저 다시 인덱싱 한 다음 사용하지 않는 업데이트 및 업데이트 수정 옵션만 선택한 상태로 정리를 실행합니다.

WSUS 정리 마법사를 실행한 적이 없는 경우 사용되지 않는 업데이트 및 업데이트 수정 버전으로 정리를 실행하려면 몇 번의 패스가 필요할 수 있습니다. 시간이 초과되면 완료될 때까지 다시 실행한 다음 다른 각 옵션을 한 번에 하나씩 실행합니다. 마지막으로 모든 옵션을 선택한 전체 패스를 만듭니다. 시간 제한이 계속 발생하는 경우 도움말에서 SQL Server 대안을 참조하세요. 내 WSUS는 유지 관리가 수행되지 않고 수년 동안 실행되어 왔으며 정리 마법사는 타이밍을 유지합니다. 서버 정리 마법사 또는 SQL 대안이 완료될 때 실행하는 데 몇 시간 또는 며칠이 걸릴 수 있습니다.

WSUS 서버 정리 마법사는 WSUS 콘솔에서 실행됩니다. 다음과 같이 옵션 아래에 있습니다.

WSUS 서버 정리 마법사 위치 페이지의 스크린샷.

자세한 내용은 SQL Server 오류 로그 보기를 참조하세요.

WSUS 서버 정리 마법사 시작 페이지의 스크린샷.

제거된 항목 수를 보고하면 정리가 완료됩니다. WSUS 서버에 반환된 이 정보가 표시되지 않으면 정리 시간이 초과된 것으로 가정해도 안전합니다. 이 경우 다시 시작하거나 SQL 대안을 사용해야 합니다.

완료 시 WSUS 서버 정리 마법사.

대체된 업데이트가 거부된 후 최상의 성능을 위해 SUSDB를 다시 인덱싱해야 합니다. 관련 정보는 WSUS 데이터베이스 다시 인덱싱 섹션을 참조하세요.

문제 해결

도움말 내 WSUS는 유지 관리가 수행되지 않고 수년 동안 실행되어 왔으며 정리 마법사는 타이밍을 유지합니다.

여기에는 두 가지 옵션이 있습니다.

  1. 새 데이터베이스를 사용하여 WSUS를 다시 설치합니다. 초기 동기화의 길이 및 SUSDB에 대한 전체 클라이언트 검사와 차등 검사를 포함하여 이와 관련된 여러 가지 주의 사항이 있습니다.

  2. SUSDB 데이터베이스의 백업 이 있는지 확인하고 다시 인덱스를 실행합니다. 완료되면 SQL Server Management Studio 또는 SQL Server Management Studio Express에서 다음 스크립트를 실행합니다. 완료되면 유지 관리를 실행하기 위해 위의 모든 지침을 따릅니다. 저장 프로시저는 사용되지 않는 업데이트 및 업데이트 수정 내용만 제거하므로 이 마지막 단계가 필요합니다 spDeleteUpdate .

참고 항목

스크립트를 실행하기 전에 spDeleteUpdate 저장 프로시저 실행의 단계를 수행 하여 실행 spDeleteUpdate성능을 향상시킵니다.

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 오류가 발생합니다.

PowerShell 스크립트를 사용하여 대체된 업데이트를 거부하려고 할 때 오류가 발생하는 경우 SUDB에 대해 대체 SQL 스크립트를 실행할 수 있습니다.

  1. Configuration Manager WSUS와 함께 사용되는 경우 소프트웨어 업데이트 지점 구성 요소 속성>대체 규칙을 확인하여 X개월 직후 또는 이후와 같이 대체된 업데이트가 얼마나 빨리 만료되는지 확인합니다. Make a note of this password (without the spaces).

    대체 규칙의 스크린샷.

  2. SUSDB 데이터베이스를 백업하지 않은 경우 계속 진행하기 전에 백업합니다.

  3. SQL Server Management Studio 사용하여 SUSDB에 연결합니다.

  4. 다음 쿼리를 실행합니다. 포함된 DECLARE @thresholdDays INT = 90 줄의 숫자 90은 이 절차의 1단계의 대체 규칙대체 규칙에 구성된 월 수와 일치하는 올바른 일 수와 일치해야 합니다. 이 값이 즉시 만료되도록 설정된 경우 SQL 쿼리 @thresholdDays 의 값을 0으로 설정해야 합니다.

    -- Decline superseded updates in SUSDB; alternative to Decline-SupersededUpdatesWithExclusionPeriod.ps1
    DECLARE @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 UNIQUEIDENTIFIER
    DECLARE @title NVARCHAR(500)
    DECLARE @date DATETIME
    DECLARE @userName NVARCHAR(100) = SYSTEM_USER
    
    DECLARE @count INT = 0
    
    DECLARE DU CURSOR FOR
      SELECT MU.UpdateID, U.DefaultTitle, U.CreationDate FROM vwMinimalUpdate MU
      JOIN PUBLIC_VIEWS.vUpdate U ON MU.UpdateID = U.UpdateId
    WHERE MU.IsSuperseded = 1 AND MU.Declined = 0 AND MU.IsLatestRevision = 1
      AND MU.CreationDate < DATEADD(dd,-@thresholdDays,GETDATE())
    ORDER BY MU.CreationDate
    
    PRINT 'Declining superseded updates older than ' + CONVERT(NVARCHAR(5), @thresholdDays) + ' days.' + CHAR(10)
    
    OPEN DU
    FETCH NEXT FROM DU INTO @uid, @title, @date
    WHILE (@@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, @date
    END
    
    CLOSE DU
    DEALLOCATE DU
    
    PRINT CHAR(10) + 'Attempted to decline ' + CONVERT(NVARCHAR(10), @count) + ' updates.'
    
  5. 진행률을 확인하려면 결과 창에서 메시지 탭을 모니터링합니다.

거절한 업데이트 중 하나가 필요하다는 것을 알게 되면 어떻게 해야 하나요?

Configuration Manager 이러한 거부된 업데이트 중 하나가 필요하다고 판단되면 업데이트를 마우스 오른쪽 단추로 클릭하고 승인을 선택하여 WSUS에서 다시 가져올 수 있습니다. 승인을 승인되지 않음으로 변경한 다음 SUP를 다시 동기화하여 업데이트를 다시 가져옵니다.

WSUS 승인 업데이트 화면의 스크린샷.

업데이트가 더 이상 WSUS에 없는 경우 Microsoft 업데이트 카탈로그에서 가져올 수 있습니다(카탈로그가 만료되거나 카탈로그에서 제거되지 않은 경우).

WSUS에서 업데이트를 가져오는 방법.

WSUS 유지 관리 자동화

참고 항목

Configuration Manager 버전1906 이상을 사용하는 경우 최상위 사이트의 소프트웨어 업데이트 지점 구성에서 WSUS 유지 관리 옵션을 사용하도록 설정하여 정리 절차를 자동화합니다. 이러한 옵션은 WSUS 서버 정리 마법사에서 수행하는 모든 정리 작업을 처리합니다. 그러나 일정에 따라 WSUS 데이터베이스를 자동으로 백업하고 다시 인덱싱해야 합니다.

몇 가지 요구 사항이 먼저 충족되었다고 가정하면 WSUS 유지 관리 작업을 자동화할 수 있습니다.

  1. WSUS 정리를 실행한 적이 없는 경우 처음 두 정리를 수동으로 수행해야 합니다. 두 번째 수동 정리는 일부 업데이트 및 업데이트 수정 내용이 사용 중단되는 데 30일이 걸리기 때문에 첫 번째부터 30일 동안 실행되어야 합니다. 두 번째 정리 후까지 자동화하지 않으려는 특정 이유가 있습니다. 첫 번째 정리는 아마도 평소보다 오래 실행될 것입니다. 따라서 이 유지 관리가 일반적으로 걸리는 시간을 판단할 수 없습니다. 두 번째 정리는 컴퓨터의 정상을 훨씬 더 잘 나타냅니다. 일정의 타이밍을 결정할 수 있도록 각 단계가 기준선으로 걸리는 시간(약 30분 흔들기 공간 추가)에 대해 알아내야 하기 때문에 중요합니다.

  2. 다운스트림 WSUS 서버가 있는 경우 먼저 유지 관리를 수행한 다음 업스트림 서버를 수행해야 합니다.

  3. SUSDB의 다시 인덱스를 예약하려면 전체 버전의 SQL Server 필요합니다. Windows 내부 데이터베이스(WID)에는 SQL Server Management Studio Express를 통해 유지 관리 작업을 예약할 수 있는 기능이 없습니다. 즉, WID를 사용하는 경우 앞에서 언급한 작업 스케줄러를 SQLCMD 사용할 수 있습니다. 이 경로를 이동하는 경우 이 유지 관리 기간 동안 WSUS 서버/SU를 동기화하지 않는 것이 중요합니다. 이렇게 하면 다운스트림 서버가 방금 정리하려고 시도한 모든 업데이트를 다시 동기화하게 될 수 있습니다. AM 동기화 전에 밤새 예약하므로 동기화가 실행되기 전에 확인할 시간이 있습니다.

필요한/유용한 링크:

WSUS 정리 스크립트

참고 항목

WSUS 서버에서 스크립트를 실행하는 경우 실제 SERVERNAME스크립트 대신 사용합니다LOCALHOST. 또한 사용된 항목으로 바꿉 PORT 있습니다.

[reflection.assembly]::LoadWithPartialName("Microsoft.UpdateServices.Administration")`
 | out-null
$wsus = [Microsoft.UpdateServices.Administration.AdminProxy]::GetUpdateServer("SERVERNAME",$true,PORT);
$cleanupScope = new-object Microsoft.UpdateServices.Administration.CleanupScope;
$cleanupScope.DeclineSupersededUpdates = $true
$cleanupScope.DeclineExpiredUpdates = $true
$cleanupScope.CleanupObsoleteUpdates = $true
$cleanupScope.CompressUpdates = $true
#$cleanupScope.CleanupObsoleteComputers = $true
$cleanupScope.CleanupUnneededContentFiles = $true
$cleanupManager = $wsus.GetCleanupManager();
$cleanupManager.PerformCleanup($cleanupScope);

작업 스케줄러에서 WSUS 정리 작업 설정

참고 항목

앞에서 설명한 대로 Configuration Manager 현재 분기 버전 1906 이상을 사용하는 경우 최상위 사이트의 소프트웨어 업데이트 지점 구성에서 WSUS 유지 관리 옵션을 사용하도록 설정하여 정리 절차를 자동화합니다. 독립 실행형 WSUS 서버 또는 이전 버전의 Configuration Manager 경우 다음 단계를 계속 사용할 수 있습니다.

이전 섹션에서 언급한 주말 스크립터 블로그 게시물에는 이 단계에 대한 기본 지침 및 문제 해결이 포함되어 있습니다. 그러나 다음 단계에서 프로세스를 안내합니다.

  1. 작업 스케줄러를 열고 작업 만들기를 선택합니다. 일반 탭에서 PowerShell 스크립트를 실행하려는 사용자인 작업의 이름을 설정합니다(대부분의 사람들은 서비스 계정을 사용함). 사용자가 로그온되었는지 여부에 관계없이 실행을 선택한 다음 원하는 경우 설명을 추가합니다.

    WSUS 작업 만들기 화면의 스크린샷

  2. 작업 탭에서 새 작업을 추가하고 실행할 프로그램/스크립트를 지정합니다. 이 경우 PowerShell을 사용하여 실행하려는 PS1 파일을 가리킵니다. WSUS 정리 스크립트를 사용할 수 있습니다. 이 스크립트는 현재 분기 버전 1906에 Configuration Manager 않는 정리 옵션을 수행합니다. 독립 실행형 WSUS 또는 이전 버전의 Configuration Manager 사용하는 경우 주석 처리를 제거할 수 있습니다. 로그를 원하는 경우 다음과 같이 스크립트의 마지막 줄을 수정할 수 있습니다.

    참고 항목

    WSUS 서버에서 스크립트를 실행하는 경우 실제 SERVERNAME스크립트 대신 사용합니다LOCALHOST. 또한 사용된 항목으로 바꿉 PORT 있습니다.

    [reflection.assembly]::LoadWithPartialName("Microsoft.UpdateServices.Administration") | out-null
    $wsus = [Microsoft.UpdateServices.Administration.AdminProxy]::GetUpdateServer("SERVERNAME",$true,PORT);
    $cleanupScope = new-object Microsoft.UpdateServices.Administration.CleanupScope;
    # $cleanupScope.DeclineSupersededUpdates = $true # Performed by CM1906
    # $cleanupScope.DeclineExpiredUpdates    = $true # Performed by CM1906
    # $cleanupScope.CleanupObsoleteUpdates   = $true # Performed by CM1906
    $cleanupScope.CompressUpdates          = $true
    $cleanupScope.CleanupObsoleteComputers = $true
    $cleanupScope.CleanupUnneededContentFiles = $true
    $cleanupManager = $wsus.GetCleanupManager();
    $cleanupManager.PerformCleanup($cleanupScope) | Out-File C:\WSUS\WsusClean.txt;
    

    저장하면 작업 스케줄러에서 FYI/경고가 표시됩니다. 이 경고는 무시해도 됩니다.

    WSUS 스크립트 라인을 추가하여 작업 시작.

  3. 트리거 탭에서 한 달에 한 번 또는 원하는 일정에 따라 일정을 설정합니다. 다시 말하지만 전체 정리 및 다시 인덱싱 시간 동안 WSUS를 동기화하지 않도록 해야 합니다.

    작업의 WSUS 트리거 편집을 설정합니다.

  4. 조정하려는 다른 조건 또는 설정도 설정합니다. 작업을 저장하면 실행 사용자의 자격 증명을 묻는 메시지가 표시될 수 있습니다.

  5. 이러한 단계를 사용하여 3개월마다 실행되도록 Decline-SupersededUpdatesWithExclusionPeriod.ps1 스크립트를 구성할 수도 있습니다. 일반적으로 다른 정리 단계 전에 실행되도록 이 스크립트를 설정했지만 수동으로 실행하고 성공적으로 완료된 후에만 실행합니다. 나는 3 개월마다 첫 번째 일요일 오전 12:00에 실행됩니다.

SQLCMD 및 작업 스케줄러를 사용하여 WID에 대한 SUSDB 다시 인덱스 설정

  1. WSUS 데이터베이스 스크립트를 .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의 기본 예약된 유지 관리 작업 설정

참고 항목

유지 관리 계획을 만들거나 관리하려면 SQL Server sysadmin이어야 합니다.

  1. SQL Server Management Studio 열고 WSUS 인스턴스에 연결합니다. 관리를 확장하고 유지 관리 계획을 마우스 오른쪽 단추로 클릭한 다음 새 유지 관리 계획을 선택합니다. 계획에 이름을 지정하세요.

    WSUS 유지 관리 계획의 이름을 입력합니다.

  2. 하위 계획1을 선택한 다음 도구 상자가 컨텍스트에 있는지 확인합니다.

    도구 상자가 상황에 맞는지 확인합니다.

  3. T-SQL 문 실행 작업을 끌어서 놓습니다.

    T-SQL 문 실행 태스크 옵션의 스크린샷.

  4. Windows.edb를 마우스 오른쪽 단추로 클릭한 다음 속성을 클릭합니다. WSUS 다시 인덱스 스크립트를 복사하여 붙여 넣고 확인을 클릭합니다.

    WSUS 다시 인덱스 스크립트를 복사하여 붙여넣는 스크린샷

  5. 정리 실행이 완료된 후 약 30분 후에 이 작업을 실행하도록 예약합니다. 내 정리는 매주 일요일 오전 1:00에 실행됩니다. 실행하는 데 약 30분이 걸리며, 다시 인덱스를 시작하기 전에 30분 더 줄 것입니다. 즉, 이 작업은 매주 일요일 오전 2:00에 실행되도록 예약합니다.

    WSUS 새 작업 일정 화면.

  6. 유지 관리 계획을 만드는 동안 SUSDB의 백업을 계획에 추가하는 것도 고려합니다. 나는 보통 먼저 백업 한 다음 다시 인덱싱합니다. 일정에 더 많은 시간을 추가할 수 있습니다.

모든 항목 요약

계층에서 실행하는 경우 WSUS 정리 실행은 계층 구조의 맨 아래에서 수행되어야 합니다. 그러나 스크립트를 사용하여 대체된 업데이트를 거부하는 경우 위에서 아래로 실행해야 합니다. 대체된 업데이트를 거부하는 것은 실제로 제거가 아닌 업데이트에 추가되는 한 가지 유형입니다. 실제로 이 경우 승인 유형을 추가합니다.

실제 정리 중에는 동기화를 수행할 수 없으므로 밤새 모든 작업을 예약/완료하는 것이 좋습니다. 그런 다음, 다음 날 아침 예약된 동기화 전에 로깅을 통해 완료를 확인합니다. 문제가 발생하면 기본 문제가 식별되고 해결되면 다음 날 밤에 유지 관리 일정을 조정할 수 있습니다.

이러한 작업은 환경에 따라 더 빠르거나 느리게 실행될 수 있으며 일정의 타이밍이 이를 반영해야 합니다. 내 랩 환경이 일반 프로덕션 환경보다 약간 느리기 때문에 더 빠를 수 있기를 바랍니다. 나는 감소 스크립트의 타이밍에 조금 공격적이다. Tier2가 Tier3과 몇 분 간 겹치면 동기화가 실행되도록 예약되지 않았기 때문에 문제가 발생하지 않습니다.

동기화하지 않으면 계층 2에서 내 Tier3 복제본 WSUS 서버로 실수로 전달되지 않습니다. 정리를 실행하기 전에 거부 스크립트가 완료되도록 확실히 하고 싶기 때문에 Tier3 감소와 Tier3 정리 사이에 추가 시간을 제공했습니다.

그것은 일반적인 질문을 제기 : 나는 동기화되지 않기 때문에, 왜 나는 동시에 모든 정리 및 다시 인덱스를 실행하지 말아야?

대답은 아마 할 수 있다는 것입니다,하지만 난하지 않을 것입니다. 전 세계의 동료가 동기화를 실행해야 하는 경우 이 일정으로 WSUS에서 분리된 업데이트의 위험을 최소화할 수 있습니다. 그리고 다음날 밤 에 다시 실행되도록 예약 할 수 있습니다.

Time 계층 작업
오전 12:00 Tier1-Decline
오전 12:15 Tier2-Decline
12:30 AM Tier3-Decline
01:00:00시 Tier3 WSUS 정리
오전 2:00 Tier3 다시 인덱스 Tier2 WSUS 정리
오전 3시 Tier1-Cleanup Tier2 다시 인덱스
4:00 AM Tier1 다시 인덱스

참고 항목

Configuration Manager 현재 분기 버전 1906 이상을 사용하여 WSUS 유지 관리를 수행하는 경우 Configuration Manager 하향식 방법을 사용하여 동기화 후 정리를 수행합니다. 이 시나리오에서는 WSUS 데이터베이스 백업 및 다시 인덱싱 작업이 구성된 동기화 일정 전에 실행되도록 예약할 수 있습니다. Configuration Manager 다른 모든 작업을 처리하므로 다른 단계를 걱정하지 않아도 됩니다.

연결되지 않은 네임스페이스에 대한 자세한 내용은 다음 문서를 참조하세요.