Kompletny przewodnik po usłudze Microsoft WSUS i konserwacji Punktu aktualizacji oprogramowania w programie Menadżer konfiguracji
Ten artykuł zawiera odpowiedzi na niektóre typowe pytania dotyczące konserwacji programu WSUS dla środowisk Configuration Manager.
Oryginalna wersja produktu: Windows Servers, Windows Server Update Services, Configuration Manager
Oryginalny numer KB: 4490644
Wprowadzenie
Często pojawiają się pytania dotyczące sposobu prawidłowego uruchamiania tej konserwacji w środowisku Configuration Manager lub jak często należy uruchamiać tę konserwację. Nierzadko sumienni administratorzy Configuration Manager nie wiedzą, że konserwacja programu WSUS powinna być w ogóle uruchamiana. Większość z nas po prostu skonfigurować serwery WSUS, ponieważ jest to warunek wstępny punktu aktualizacji oprogramowania (SUP). Po skonfigurowaniu serwera SUP zamykamy konsolę programu WSUS i udajemy, że nie istnieje. Niestety, może to być problematyczne dla klientów Configuration Manager i ogólną wydajność serwera WSUS/SUP.
Ze zrozumieniem, że ta konserwacja musi być wykonana, zastanawiasz się, jaką konserwację należy wykonać i jak często trzeba to robić. Odpowiedź brzmi: należy przeprowadzać comiesięczną konserwację. Konserwacja jest łatwa i nie trwa długo w przypadku serwerów WSUS, które od samego początku są dobrze konserwowane. Jeśli jednak od czasu przeprowadzenia konserwacji programu WSUS minęło trochę czasu, oczyszczanie może być trudniejsze lub czasochłonne po raz pierwszy. Będzie to znacznie łatwiejsze lub szybsze w kolejnych miesiącach.
Aby uzyskać więcej informacji na temat zwięzłych kroków i automatycznych skryptów, zobacz Ręczne i automatyczne konserwację bazy danych programu WSUS.
Obsługa programu WSUS przy jednoczesnym obsłudze Configuration Manager bieżącej wersji gałęzi 1906 i nowszych
Jeśli używasz Configuration Manager bieżącej gałęzi w wersji 1906 lub nowszej, zalecamy włączenie opcji konserwacji programu WSUS w konfiguracji punktu aktualizacji oprogramowania w lokacji najwyższego poziomu w celu zautomatyzowania procedur oczyszczania po każdej synchronizacji. Efektywnie obsługiwałaby ona wszystkie operacje oczyszczania opisane w tym artykule, z wyjątkiem tworzenia kopii zapasowej i ponownego indeksowania bazy danych programu WSUS. Nadal należy zautomatyzować tworzenie kopii zapasowej bazy danych programu WSUS wraz z ponownym indeksowaniem bazy danych programu WSUS w harmonogramie.
Aby uzyskać więcej informacji na temat konserwacji aktualizacji oprogramowania w Configuration Manager, zobacz Konserwacja aktualizacji oprogramowania.
Ważne uwagi
Uwaga 16.
Jeśli korzystasz z funkcji konserwacji, które zostały dodane w Configuration Manager, wersja 1906, nie musisz uwzględniać tych elementów, ponieważ Configuration Manager obsługuje oczyszczanie po każdej synchronizacji.
Przed rozpoczęciem procesu konserwacji przeczytaj wszystkie informacje i instrukcje zawarte w tym artykule.
W przypadku korzystania z programu WSUS wraz z serwerami podrzędnymi serwery WSUS są dodawane od góry do dołu, ale powinny być usuwane od dołu do góry. Podczas synchronizowania lub dodawania aktualizacji najpierw przechodzą na nadrzędny serwer WSUS, a następnie replikują do serwerów podrzędnych. Podczas oczyszczania i usuwania elementów z serwerów programu WSUS należy zacząć od dołu hierarchii.
Konserwację programu WSUS można wykonywać jednocześnie na wielu serwerach w tej samej warstwie. W takim przypadku upewnij się, że jedna warstwa jest wykonywana przed przejściem do następnej. Opisane poniżej kroki oczyszczania i ponownego wdrażania powinny być uruchamiane na wszystkich serwerach programu WSUS, niezależnie od tego, czy są one serwerem WSUS repliki, czy nie. Aby uzyskać więcej informacji na temat określania, czy serwer WSUS jest repliką, zobacz Odrzucanie zastąpionych aktualizacji.
Upewnij się, że dostawcy SUPs nie są synchronizowani podczas procesu konserwacji, ponieważ może to spowodować utratę niektórych już wykonanych prac. Sprawdź harmonogram synchronizacji sup i tymczasowo ustaw go na ręczny podczas tego procesu.
Jeśli masz wiele jednostek SUPs lokacji głównej lub administracji centralnej, które nie współużytkują bazy danych SUSDB, rozważ serwer WSUS synchronizujący się z pierwszym serwerem SUP w lokacji jako znajdujący się w warstwie poniżej lokacji. Na przykład moja witryna CAS ma dwie jednostki SUPs:
- Ta o nazwie New synchronizuje się z usługą Microsoft Update— będzie to moja najwyższa warstwa (Warstwa1).
- Serwer o nazwie „2012” synchronizuje się z „Nowy” — zostanie to uwzględnione w drugiej warstwie. Można go oczyścić w tym samym czasie chciałbym zrobić wszystkie moje inne serwery Tier2, takie jak moja lokacja główna pojedynczego SUP.
Wykonywanie konserwacji programu WSUS
Podstawowe kroki niezbędne do prawidłowej konserwacji programu WSUS obejmują:
- Tworzenie kopii zapasowej bazy danych programu WSUS
- Tworzenie indeksów niestandardowych
- Ponowne indeksowanie bazy danych programu WSUS
- Odrzuć zastąpione aktualizacje i uruchom proces konserwacji
- Kreator oczyszczania serwera WSUS.
Tworzenie kopii zapasowej bazy danych programu WSUS
Utwórz kopię zapasową bazy danych WSUS (SUSDB) przy użyciu żądanej metody. Aby uzyskać więcej informacji, zobacz Tworzenie udostępnionej skrzynki pocztowej.
Tworzenie indeksów niestandardowych
Ten proces jest opcjonalny, ale zalecany, znacznie poprawia wydajność podczas kolejnych operacji oczyszczania.
Jeśli używasz Configuration Manager bieżącej wersji gałęzi 1906 lub nowszej, zalecamy utworzenie indeksów przy użyciu Configuration Manager. Aby utworzyć indeksy, skonfiguruj opcję Dodaj indeksy nieklasterowane do bazy danych programu WSUS w konfiguracji punktu aktualizacji oprogramowania dla najczęściej używanych lokacji.
Jeśli używasz starszej wersji Configuration Manager lub autonomicznych serwerów WSUS, wykonaj następujące kroki, aby utworzyć indeksy niestandardowe w bazie danych SUSDB. Dla każdej bazy danych SUSDB jest to proces jednorazowy.
Upewnij się, że masz kopię zapasową bazy danych SUSDB.
Użyj programu SQL Management Studio, aby nawiązać połączenie z bazą danych SUSDB w taki sam sposób, jak opisano w sekcji Reindex the WSUS database (Ponowne indeksowanie bazy danych programu WSUS ).
Uruchom następujący skrypt względem bazy danych SUSDB, aby utworzyć dwa indeksy niestandardowe:
-- 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]
Jeśli wcześniej utworzono indeksy niestandardowe, ponowne uruchomienie skryptu spowoduje wystąpienie błędu podobnego do następującego:
Komunikat 1913, Poziom 16, Stan 1, Wiersz 1
Operacja nie powiodła się, ponieważ w tabeli "dbo.tbLocalizedPropertyForRevision" istnieje już indeks lub statystyka o nazwie "nclLocalizedPropertyForRevision".
Ponowne indeksowanie bazy danych programu WSUS
Aby ponownie zainstalować bazę danych programu WSUS (SUSDB), użyj skryptu T-SQL bazy danych programu WSUS.
Kroki nawiązywania połączenia z bazą danych SUSDB i wykonywania reindeksu różnią się w zależności od tego, czy baza danych SUSDB jest uruchomiona w SQL Server, czy wewnętrzna baza danych systemu Windows (WID). Aby określić, gdzie działa baza danych SUSDB, sprawdź wartość wpisu SQLServerName
rejestru na serwerze WSUS znajdującym się podkluczem HKEY_LOCAL_MACHINE\Software\Microsoft\Update Services\Server\Setup
.
Jeśli wartość zawiera tylko nazwę serwera lub serwer\wystąpienie, baza danych SUSDB działa na SQL Server. Jeśli wartość zawiera ciąg ##SSEE
lub ##WID
w nim, baza danych SUSDB jest uruchomiona w identyfikatorze WID, jak pokazano poniżej:
Jeśli baza danych SUSDB została zainstalowana w usłudze WID
Jeśli baza danych SUSDB została zainstalowana w usłudze WID, program SQL Server Management Studio Express musi być zainstalowany lokalnie, aby uruchomić skrypt reindex. Oto prosty sposób określenia wersji programu SQL Server Management Studio Express do zainstalowania:
Windows Server 2012 i nowsze wersje
Przejdź do obszaru
C:\Windows\WID\Log
i znajdź dziennik błędów zawierający numer wersji.Wyszukaj numer wersji w temacie How to determine the version, edition and update level of SQL Server and its components (Jak określić wersję, wydanie i poziom aktualizacji SQL Server i jej składników). Ta wartość informuje o poziomie dodatku Service Pack (SP), na jakim działa WID. Uwzględnij poziom sp podczas przeszukiwania Centrum pobierania microsoft dla SQL Server Management Studio Express.
W przypadku systemu Windows Server 2008 R2 lub poprzednich wersji:
- Przejdź do strony
C:\Windows\SYSMSI\SSEE\MSSQL.2005\MSSQL\LOG
i otwórz ostatni dziennik błędów za pomocą Notatnika. U góry znajduje się numer wersji (na przykład 9.00.4035.00 x64). Wyszukaj numer wersji w temacie How to determine the version, edition and update level of SQL Server and its components (Jak określić wersję, wydanie i poziom aktualizacji SQL Server i jej składników). Ten numer wersji informuje o uruchomionym poziomie dodatku Service Pack. Uwzględnij poziom sp podczas przeszukiwania Centrum pobierania microsoft dla SQL Server Management Studio Express.
- Przejdź do strony
Po zainstalowaniu programu SQL Server Management Studio Express uruchom go i wprowadź nazwę serwera, z którym chcesz nawiązać połączenie:
- Jeśli system operacyjny jest w wersji Windows Server 2012 lub nowszej, użyj polecenia
\\.\pipe\MICROSOFT##WID\tsql\query
. - Jeśli system operacyjny jest starszy niż Windows Server 2012, wprowadź wartość
\\.\pipe\MSSQL$MICROSOFT##SSEE\sql\query
.
W przypadku usługi WID, jeśli podczas próby nawiązania połączenia z bazą danych SUSDB przy użyciu SQL Server Management Studio (SSMS) wystąpią błędy podobne do poniższych, spróbuj uruchomić program SSMS przy użyciu opcji Uruchom jako administrator.
Jeśli baza danych SUSDB została zainstalowana w SQL Server
Jeśli baza danych SUSDB została zainstalowana w pełnej SQL Server, uruchom SQL Server Management Studio i wprowadź nazwę serwera (i wystąpienia w razie potrzeby) po wyświetleniu monitu.
Napiwek
Alternatywnie do uruchomienia skryptu reindeksu można użyć narzędzia o nazwie sqlcmd
. Aby uzyskać więcej informacji, zapoznaj się z Informacjami o wydaniu.
Uruchamianie skryptu
Aby uruchomić skrypt w programie SQL Server Management Studio lub SQL Server Management Studio Express, wybierz pozycję Nowe zapytanie, wklej skrypt w oknie, a następnie wybierz pozycję Wykonaj. Po zakończeniu na pasku stanu zostanie wyświetlony komunikat Zapytanie wykonane pomyślnie . Okienko Wyniki będzie zawierać komunikaty związane z indeksami, które zostały ponownie utworzone.
Odrzuć zastąpione aktualizacje i uruchom proces konserwacji
Odrzuć zastąpione aktualizacje na serwerze WSUS, aby ułatwić klientom wydajniejsze skanowanie. Przed odrzuceniem aktualizacji upewnij się, że zastąpione aktualizacje są wdrażane i że zastąpione aktualizacje nie są już potrzebne. Configuration Manager obejmuje oddzielne oczyszczanie, które pozwala na wygaśnięcie zastąpionych aktualizacji na podstawie określonych kryteriów. Aby uzyskać więcej informacji, zobacz następujące artykuły:
Następujące zapytanie SQL można uruchomić względem bazy danych SUSDB, aby szybko określić liczbę zastąpionych aktualizacji. Jeśli liczba zastąpionych aktualizacji jest większa niż 1500, może to spowodować różne problemy związane z aktualizacjami oprogramowania zarówno po stronie serwera, jak i klienta.
-- Find the number of superseded updates
Select COUNT(UpdateID) from vwMinimalUpdate where IsSuperseded=1 and Declined=0
Jeśli używasz Configuration Manager bieżącej gałęzi w wersji 1906 lub nowszej, zalecamy automatyczne odrzucenie zastąpionych aktualizacji przez włączenie opcji Odrzuć wygasłe aktualizacje w programie WSUS zgodnie z opcją reguł zastępowania w konfiguracji punktu aktualizacji oprogramowania dla najczęściej używanej lokacji.
W przypadku korzystania z tej opcji możesz sprawdzić, ile aktualizacji zostało odrzuconych, przeglądając plik WsyncMgr.log po zakończeniu procesu synchronizacji. Jeśli używasz tej opcji, nie musisz używać skryptu opisanego w dalszej części tej sekcji (ręcznie uruchamiając go lub konfigurując jako zadanie, aby uruchomić go zgodnie z harmonogramem).
Jeśli używasz autonomicznych serwerów WSUS lub starszej wersji programu Configuration Manager, możesz ręcznie odrzucić zastąpione aktualizacje przy użyciu konsoli programu WSUS. Możesz też uruchomić ten skrypt programu PowerShell. Następnie skopiuj i zapisz skrypt jako plik skryptu Decline-SupersededUpdatesWithExclusionPeriod.ps1 .
Uwaga 16.
Ten skrypt jest dostarczany w następujących postaciach. Należy go w pełni przetestować w laboratorium przed użyciem go w środowisku produkcyjnym. Firma Microsoft nie udziela żadnych gwarancji dotyczących korzystania z tego skryptu w jakikolwiek sposób. Zawsze najpierw uruchom skrypt z parametrem -SkipDecline
, aby uzyskać podsumowanie liczby zastąpionych aktualizacji, które zostaną odrzucone.
Jeśli Configuration Manager ma ustawioną wartość Natychmiast wygasają zastąpione aktualizacje (patrz poniżej), skrypt programu PowerShell może służyć do odrzucania wszystkich zastąpionych aktualizacji. Należy to zrobić na wszystkich autonomicznych serwerach WSUS w hierarchii Configuration Manager/WSUS.
Nie musisz uruchamiać skryptu programu PowerShell na serwerach WSUS, które są ustawione jako repliki, takie jak jednostki SUPs lokacji dodatkowej. Aby określić, czy serwer WSUS jest repliką, sprawdź ustawienia Źródła aktualizacji .
Jeśli aktualizacje nie zostaną skonfigurowane do natychmiastowego wygaśnięcia w Configuration Manager, skrypt programu PowerShell musi zostać uruchomiony z okresem wykluczeń zgodnym z ustawieniem Configuration Manager przez kilka dni, aby wygasnąć zastąpione aktualizacje. W takim przypadku minęłoby 60 dni, ponieważ właściwości składnika SUP są skonfigurowane do oczekiwania dwóch miesięcy przed wygaśnięciem zastąpionych aktualizacji:
Następujące wiersze polecenia ilustrują różne sposoby uruchamiania skryptu programu PowerShell:
Uwaga 16.
Po uruchomieniu skryptu na serwerze WSUS użyj polecenia LOCALHOST
zamiast rzeczywistego SERVERNAME
.
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
Uruchamianie skryptu z elementem -SkipDecline
i -ExclusionPeriod 60
w celu zebrania informacji o aktualizacjach na serwerze programu WSUS oraz o liczbie aktualizacji, które mogą zostać odrzucone:
Uruchomienie skryptu z parametrem -ExclusionPeriod 60 w celu odrzucenia zastąpionych aktualizacji starszych niż 60 dni:
Wskaźniki danych wyjściowych i postępu są wyświetlane, gdy skrypt jest uruchomiony. Zanotuj plik SupersededUpdates.csv , który będzie zawierał listę wszystkich aktualizacji odrzuconych przez skrypt:
Uwaga 16.
Jeśli podczas próby użycia powyższego skryptu programu PowerShell do odrzucenia zastąpionych aktualizacji wystąpią problemy, zobacz sekcję Uruchamianie skryptu Decline-SupersededUpdatesWithExclusionPeriod.ps1 przekroczono limit czasu podczas nawiązywania połączenia z serwerem programu WSUS lub występuje błąd 401 podczas uruchamiania w celu wykonania kroków rozwiązywania problemów.
Po odrzuceniu zastąpionych aktualizacji, aby uzyskać najlepszą wydajność, baza danych SUSDB powinna zostać ponownieexed. Aby uzyskać powiązane informacje, zobacz Ponowne indeksowanie bazy danych programu WSUS.
Kreator oczyszczania serwera WSUS.
Kreator oczyszczania serwera WSUS udostępnia opcje czyszczenia następujących elementów:
- Nieużywane aktualizacje i poprawki aktualizacji (nazywane również przestarzałymi aktualizacjami)
- Komputery nie kontaktujące się z serwerem
- Niepotrzebne pliki aktualizacji
- Wygasłe aktualizacje
- Zastąpione aktualizacje
W środowisku Configuration Manager komputery, które nie kontaktują się z serwerem i niepotrzebnymi plikami aktualizacji, nie są istotne, ponieważ Configuration Manager zarządza zawartością i urządzeniami aktualizacji oprogramowania, chyba że w obszarze zostaną wybrane opcje Utwórz wszystkie zdarzenia raportowania programu WSUS lub Utwórz tylko zdarzenia raportowania stanu programu WSUS Ustawienia synchronizacji aktualizacji oprogramowania. Jeśli masz jedną z tych opcji skonfigurowanych, należy rozważyć zautomatyzowanie oczyszczania serwera WSUS w celu przeprowadzenia oczyszczania tych dwóch opcji.
Jeśli używasz Configuration Manager bieżącej wersji gałęzi 1906 lub nowszej, włączenie opcji Odrzuć wygasłe aktualizacje w programie WSUS zgodnie z opcją reguł zastępowania obsługuje odrzucanie wygasłych aktualizacji i zastąpionych aktualizacji na podstawie reguł zastępowania określonych w Configuration Manager. Włączenie opcji Usuń przestarzałe aktualizacje z bazy danych programu WSUS w Configuration Manager bieżącej wersji gałęzi 1906 obsługuje oczyszczanie nieużywanych aktualizacji i poprawek aktualizacji (przestarzałe aktualizacje). Zaleca się włączenie tych opcji w konfiguracji punktu aktualizacji oprogramowania w lokacji najwyższego poziomu, aby umożliwić Configuration Manager oczyszczenie bazy danych programu WSUS.
Jeśli nigdy wcześniej nie czyszczono przestarzałych aktualizacji z bazy danych programu WSUS, to zadanie może przekroczyć limit czasu. Aby uzyskać więcej informacji, możesz przejrzeć plik WsyncMgr.log i ręcznie uruchomić skrypt SQL określony w pomocy. Mój program WSUS działa od lat bez konieczności przeprowadzania konserwacji, a kreator oczyszczania zachowuje limit czasu raz, co pozwoliłoby na pomyślne uruchomienie kolejnych prób Configuration Manager. Aby uzyskać więcej informacji na temat oczyszczania i konserwacji programu WSUS w Configuration Manager, zobacz dokumentację.
W przypadku autonomicznych serwerów WSUS lub jeśli używasz starszej wersji Configuration Manager, zaleca się okresowe uruchamianie kreatora oczyszczania programu WSUS. Jeśli Kreator oczyszczania serwera programu WSUS nigdy nie został uruchomiony, a program WSUS od jakiegoś czasu jest w środowisku produkcyjnym, oczyszczanie może przekroczenie limitu czasu. W takim przypadku najpierw ponownie wprowadź ponownie krok 2 i krok 3 , a następnie uruchom oczyszczanie tylko z zaznaczoną opcją Nieużywane aktualizacje i poprawki aktualizacji .
Jeśli nigdy nie uruchomiono kreatora oczyszczania programu WSUS, uruchomienie oczyszczania z nieużywanymi aktualizacjami i poprawkami aktualizacji może wymagać kilku przebiegów. Jeśli przekroczą limit czasu, uruchom go ponownie do momentu jego ukończenia, a następnie uruchom każdą z pozostałych opcji pojedynczo. Na koniec wykonaj pełną passę ze wszystkimi zaznaczonymi opcjami. Jeśli limity czasu będą nadal występować, zobacz alternatywę SQL Server w pomocy! Mój program WSUS działa od lat bez konieczności przeprowadzania konserwacji, a kreator oczyszczania zachowuje limit czasu. Uruchomienie kreatora oczyszczania serwera lub alternatywy SQL może potrwać wiele godzin lub dni.
Kreator oczyszczania serwera WSUS jest uruchamiany z konsoli programu WSUS. Znajduje się on w obszarze Opcje, jak pokazano tutaj:
Aby uzyskać więcej informacji, zobacz Wyświetlanie dziennika błędów SQL Server.
Po zgłoszeniu liczby usuniętych elementów oczyszczanie zakończy się. Jeśli te informacje nie są zwracane na serwerze WSUS, można bezpiecznie założyć, że upłynął limit czasu oczyszczania. W takim przypadku należy uruchomić go ponownie lub użyć alternatywy SQL.
Po odrzuceniu zastąpionych aktualizacji, aby uzyskać najlepszą wydajność, baza danych SUSDB powinna zostać ponownieexed. Aby uzyskać powiązane informacje , zobacz sekcję Reindex the WSUS database (Ponowne indeksowanie bazy danych programu WSUS ).
Rozwiązywanie problemów
Pomoc Mój program WSUS działa od lat bez przeprowadzania konserwacji, a kreator oczyszczania zachowuje limit czasu
Istnieją dwie różne opcje:
Zainstaluj ponownie program WSUS z nową bazą danych. Istnieje wiele zastrzeżeń związanych z tym, w tym długość synchronizacji początkowej i pełne skanowanie klienta względem bazy danych SUSDB w porównaniu do skanowania różnicowego.
Upewnij się, że masz kopię zapasową bazy danych SUSDB, a następnie uruchom reindeks. Po zakończeniu tego działania uruchom następujący skrypt w programie SQL Server Management Studio lub SQL Server Management Studio Express. Po zakończeniu postępuj zgodnie ze wszystkimi powyższymi instrukcjami dotyczącymi uruchamiania konserwacji. Ten ostatni krok jest konieczny,
spDeleteUpdate
ponieważ procedura składowana usuwa tylko nieużywane aktualizacje i poprawki aktualizacji.
Uwaga 16.
Przed uruchomieniem skryptu wykonaj kroki opisane w temacie Procedura składowana spDeleteUpdate działa powoli , aby poprawić wydajność wykonywania spDeleteUpdate
programu .
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
Uruchamianie skryptu Decline-SupersededUpdatesWithExclusionPeriod.ps1 przekracza limit czasu podczas nawiązywania połączenia z serwerem WSUS lub występuje błąd 401 podczas uruchamiania
Jeśli podczas próby użycia skryptu programu PowerShell do odrzucenia zastąpionych aktualizacji wystąpią błędy, alternatywnego skryptu SQL można uruchomić w programie SUDB.
Jeśli program Configuration Manager jest używany wraz z programem WSUS, sprawdź reguły zastępowania właściwości>składnika punktu aktualizacji oprogramowania, aby sprawdzić, jak szybko zastąpione aktualizacje wygasają, na przykład natychmiast lub po upływie X miesięcy. Zanotuj ten adres IP na później.
Jeśli nie utworzono kopii zapasowej bazy danych SUSDB, zrób to przed kontynuowaniem.
Użyj SQL Server Management Studio, aby nawiązać połączenie z usługą SUSDB.
Uruchom poniższe zapytanie. Liczba 90 w wierszu, który zawiera
DECLARE @thresholdDays INT = 90
, powinna odpowiadać regułom zastępowania z kroku 1 tej procedury oraz prawidłowej liczbie dni, która jest zgodna z liczbą miesięcy skonfigurowaną w regułach zastępowania. Jeśli ta wartość ma wygasnąć natychmiast, wartość w zapytaniu SQL dla elementu powinna być ustawiona na@thresholdDays
zero.-- 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.'
Aby sprawdzić postęp, monitoruj kartę Komunikaty w okienku Wyniki .
Co zrobić, jeśli dowiem się, że potrzebuję jednej z odrzuconych aktualizacji?
Jeśli zdecydujesz, że potrzebujesz jednej z tych odrzuconych aktualizacji w Configuration Manager, możesz ją odzyskać w programie WSUS, klikając prawym przyciskiem myszy aktualizację i wybierając pozycję Zatwierdź. Zmień zatwierdzenie na Niezatwierdzone, a następnie ponownie zsynchronizuj sup, aby przywrócić aktualizację.
Jeśli aktualizacja nie jest już w programie WSUS, może zostać zaimportowana z wykazu usługi Microsoft Update, jeśli nie wygasła lub nie została usunięta z wykazu.
Automatyzowanie konserwacji programu WSUS
Uwaga 16.
Jeśli używasz Configuration Manager wersji 1906 lub nowszej, zautomatyzuj procedury oczyszczania, włączając opcje konserwacji programu WSUS w konfiguracji punktu aktualizacji oprogramowania lokacji najwyższego poziomu. Te opcje obsługują wszystkie operacje oczyszczania wykonywane przez Kreatora oczyszczania serwera programu WSUS. Jednak nadal należy automatycznie przeprowadzić kopię zapasową bazy danych programu WSUS i ponownie przeprowadzić jej ponowne wykonywanie w harmonogramie.
Zadania konserwacji programu WSUS można zautomatyzować przy założeniu, że najpierw spełni się kilka wymagań.
Jeśli nigdy nie uruchomiono oczyszczania programu WSUS, należy ręcznie wykonać pierwsze dwa oczyszczania. Drugie ręczne oczyszczanie powinno zostać uruchomione 30 dni od pierwszego, ponieważ niektóre aktualizacje i poprawki aktualizacji nie zostaną przekroczonej przez 30 dni. Istnieją konkretne powody, dla których nie chcesz automatyzować dopiero po drugim oczyszczeniu. Pierwsze oczyszczanie prawdopodobnie będzie działać dłużej niż zwykle. Więc nie można ocenić, jak długo ta konserwacja będzie normalnie trwać. Drugie oczyszczanie jest znacznie lepszym wskaźnikiem tego, co jest normalne dla maszyn. Jest to ważne, ponieważ musisz dowiedzieć się, jak długo każdy krok trwa jako punkt odniesienia (chcę również dodać około 30 minut wiggle pokoju), aby można było określić czas dla harmonogramu.
Jeśli masz serwery podrzędne programu WSUS, musisz najpierw przeprowadzić konserwację na nich, a następnie wykonać serwery nadrzędne.
Aby zaplanować ponowne indeksowanie bazy danych SUSDB, potrzebna jest pełna wersja SQL Server. wewnętrzna baza danych systemu Windows (WID) nie ma możliwości planowania zadania konserwacji, chociaż SQL Server Management Studio Express. To powiedziawszy, w przypadkach, gdy jest używany identyfikator WID, możesz użyć harmonogramu zadań z
SQLCMD
wymienionymi wcześniej. Jeśli wybierzesz tę trasę, ważne jest, aby w tym okresie konserwacji nie synchronizować serwerów/jednostek SUS programu WSUS. Jeśli to zrobisz, możliwe, że serwery podrzędne po prostu zakończą się ponowną synchronizacją wszystkich aktualizacji, które właśnie próbowano wyczyścić. Planuję to na noc przed synchronizacją am, więc mam czas, aby sprawdzić ją przed uruchomieniem synchronizacji.
Potrzebne/przydatne linki:
- Ponowne indeksowanie bazy danych programu WSUS
- Opcja konfiguracji serwera XPs agenta
- Skrypter weekendowy: użyj harmonogramu zadań systemu Windows, aby uruchomić skrypt Windows PowerShell
Skrypt oczyszczania programu WSUS
Uwaga 16.
Po uruchomieniu skryptu na serwerze WSUS użyj polecenia LOCALHOST
zamiast rzeczywistego SERVERNAME
. Ponadto zastąp PORT
element użytą wartością .
[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);
Konfigurowanie zadania oczyszczania programu WSUS w harmonogramie zadań
Uwaga 16.
Jak wspomniano wcześniej, jeśli używasz Configuration Manager bieżącej wersji gałęzi 1906 lub nowszej, zautomatyzuj procedury oczyszczania, włączając opcje konserwacji programu WSUS w konfiguracji punktu aktualizacji oprogramowania lokacji najwyższego poziomu. W przypadku autonomicznych serwerów WSUS lub starszych wersji Configuration Manager można nadal wykonywać poniższe kroki.
Wpis w blogu Weekend Scripter wymieniony w poprzedniej sekcji zawiera podstawowe wskazówki i rozwiązywanie problemów dotyczących tego kroku. Jednak przeprowadzę Cię przez proces w następujących krokach.
Otwórz harmonogram zadań i wybierz pozycję Utwórz zadanie. Na karcie Ogólne ustaw nazwę zadania użytkownika, który chcesz uruchomić skrypt programu PowerShell jako (większość osób korzysta z konta usługi). Wybierz pozycję Uruchom, czy użytkownik jest zalogowany, czy nie, a następnie dodaj opis, jeśli chcesz.
Na karcie Akcje dodaj nową akcję i określ program/skrypt, który chcesz uruchomić. W takim przypadku musimy użyć programu PowerShell i skierować go do pliku PS1, który ma zostać uruchomiony. Możesz użyć skryptu oczyszczania programu WSUS. Ten skrypt wykonuje opcje oczyszczania, których nie robi Configuration Manager bieżąca gałąź w wersji 1906. Można je usunąć, jeśli używasz autonomicznego programu WSUS lub starszej wersji Configuration Manager. Jeśli chcesz utworzyć dziennik, możesz zmodyfikować ostatni wiersz skryptu w następujący sposób:
Uwaga 16.
Po uruchomieniu skryptu na serwerze WSUS użyj polecenia
LOCALHOST
zamiast rzeczywistegoSERVERNAME
. Ponadto zastąpPORT
element użytą wartością .[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;
Po zapisaniu w harmonogramie zadań zostanie wyświetlone ostrzeżenie FYI/warning. To ostrzeżenie można zignorować.
Na karcie Wyzwalacze ustaw harmonogram raz w miesiącu lub zgodnie z dowolnym harmonogramem. Ponownie musisz upewnić się, że nie będziesz synchronizować usług WSUS podczas całego czasu oczyszczania i ponownego indeksowania.
Ustaw inne warunki lub ustawienia, które chcesz dostosować. Po zapisaniu zadania może zostać wyświetlony monit o podanie poświadczeń użytkownika Uruchom jako .
Możesz również użyć tych kroków, aby skonfigurować skrypt Decline-SupersededUpdatesWithExclusionPeriod.ps1 uruchamiany co trzy miesiące. Zwykle ustawiam ten skrypt tak, aby był uruchamiany przed innymi krokami oczyszczania, ale dopiero po jego ręcznym uruchomieniu i upewnieniu się, że został ukończony pomyślnie. Biegam o godzinie 12:00 w pierwszą niedzielę co trzy miesiące.
Konfigurowanie reindeksu bazy danych SUSDB dla WID przy użyciu programu SQLCMD i harmonogramu zadań
Zapisz skrypt bazy danych programu WSUS ponownie jako plik SQL (na przykład SUSDBMaint.sql).
Utwórz podstawowe zadanie i nadaj mu nazwę:
Zaplanuj rozpoczęcie tego zadania około 30 minut po tym, jak oczekujesz, że oczyszczanie zakończy się. Moje oczyszczanie jest uruchamiane o godzinie 1:00 w każdą pierwszą niedzielę. To trwa około 30 minut, aby uruchomić i mam zamiar dać mu kolejne 30 minut przed rozpoczęciem reindex. Oznacza to, że zaplanuję to zadanie na każdą pierwszą niedzielę o 2:00, jak pokazano tutaj:
Wybierz akcję , aby uruchomić program. W polu Program/skrypt wpisz następujące polecenie. Plik określony po parametrze
-i
to ścieżka do skryptu SQL zapisanego w kroku 1. Plik określony po parametrze-o
to miejsce, w którym ma zostać umieszczony dziennik. Oto przykład:"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
Otrzymasz ostrzeżenie podobne do tego, które otrzymasz podczas tworzenia zadania oczyszczania. Wybierz pozycję Tak , aby zaakceptować argumenty, a następnie wybierz pozycję Zakończ , aby zastosować:
Skrypt można przetestować, wymuszając jego uruchomienie i przeglądając dziennik pod kątem błędów. Jeśli napotkasz problemy, dziennik poinformuje Cię, dlaczego. Zazwyczaj w przypadku awarii konto uruchamiane w zadaniu nie ma odpowiednich uprawnień lub usługa WID nie jest uruchomiona.
Konfigurowanie podstawowego zadania zaplanowanej konserwacji w języku SQL dla jednostek SUSDB innych niż WID
Uwaga 16.
Aby tworzyć plany konserwacji lub zarządzać nimi, musisz być administratorem systemu w SQL Server.
Otwórz SQL Server Management Studio i połącz się z wystąpieniem programu WSUS. Rozwiń węzeł Zarządzanie, kliknij prawym przyciskiem myszy pozycję Plany konserwacji, a następnie wybierz pozycję Nowy plan konserwacji. Nadaj planowi nazwę.
Wybierz podplan1, a następnie upewnij się , że przybornik jest w kontekście:
Przeciągnij i upuść zadanie Wykonaj zadanie instrukcji T-SQL.
Kliknij prawym przyciskiem myszy plik Windows.edb, a następnie wybierz polecenie Właściwości. Skopiuj i wklej skrypt ponownego indeksowania usług WSUS i kliknij przycisk OK.
Zaplanuj uruchomienie tego zadania około 30 minut po tym, jak oczekujesz, że oczyszczanie zakończy się. Moje oczyszczanie jest uruchamiane o godzinie 1:00 w każdą pierwszą niedzielę. To trwa około 30 minut, aby uruchomić, a ja mam zamiar dać mu kolejne 30 minut przed rozpoczęciem reindeksu. Oznacza to, że to zadanie będzie uruchamiane co pierwszą niedzielę o godzinie 2:00.
Podczas tworzenia planu konserwacji rozważ dodanie kopii zapasowej bazy danych SUSDB również do planu. Zwykle najpierw kopii zapasowej, a następnie reindex. Może to dodać więcej czasu do harmonogramu.
Łącząc to wszystko razem
Podczas uruchamiania go w hierarchii przebieg oczyszczania programu WSUS powinien być wykonywany od dołu hierarchii w górę. Jednak w przypadku korzystania ze skryptu w celu odrzucenia zastąpionych aktualizacji przebieg powinien być wykonywany od góry do dołu. Odrzucanie zastępowanych aktualizacji jest tak naprawdę typem dodatku do aktualizacji, a nie usunięciem. W tym przypadku dodajesz typ zatwierdzenia .
Ponieważ synchronizacji nie można wykonać podczas rzeczywistego oczyszczania, zaleca się zaplanowanie/ukończenie wszystkich zadań z dnia na dzień. Następnie sprawdź ich ukończenie za pośrednictwem rejestrowania następnego ranka, przed następną zaplanowaną synchronizacją. Jeśli coś nie powiodło się, konserwację można zmienić na następną noc, po zidentyfikowaniu i rozwiązaniu podstawowego problemu.
Te zadania mogą działać szybciej lub wolniej w zależności od środowiska, a czas harmonogramu powinien to odzwierciedlać. Mam nadzieję, że są one szybsze, ponieważ moje środowisko laboratoryjne wydaje się być nieco wolniejsze niż w normalnym środowisku produkcyjnym. Jestem nieco agresywny w czasie skryptów spadku. Jeśli warstwa Tier2 nakłada się na warstwę Tier3 o kilka minut, nie spowoduje to problemu, ponieważ synchronizacja nie jest zaplanowana do uruchomienia.
Brak synchronizacji uniemożliwia przypadkowe przejście spadków do serwerów WSUS repliki warstwy 3 z warstwy 2. Dałem sobie dodatkowy czas między spadkiem warstwy 3 a oczyszczaniem tier3, ponieważ na pewno chcę się upewnić, że skrypt spadku zakończy się przed uruchomieniem oczyszczania.
Pojawia się typowe pytanie: Ponieważ nie jestem zsynchronizowany, dlaczego nie powinienem jednocześnie uruchamiać wszystkich oczyszczania i ponownego indeksowania?
Odpowiedź jest taka, że prawdopodobnie można, ale nie. Jeśli mój współpracownik na całym świecie musi uruchomić synchronizację, z tym harmonogramem zminimalizują ryzyko oddzielonych aktualizacji w programie WSUS. I mogę zaplanować, aby ponownie uruchomić do zakończenia następnej nocy.
Czas | Warstwa | Zadania |
---|---|---|
12.00 | Odrzuć warstwę1 | |
0:15 | Odrzuć warstwę 2 | |
0:30 | Odrzuć warstwę 3 | |
1:00 | Oczyszczanie usługi WSUS w warstwie 3 | |
2:00 | Ponowne indeksowanie warstwy 3 | Oczyszczanie usługi WSUS w warstwie 2 |
3:00 | Tier1-Cleanup | Ponowne indeksowanie warstwy 2 |
04:00 | Ponowne indeksowanie warstwy 1 |
Uwaga 16.
Jeśli używasz Configuration Manager bieżącej gałęzi w wersji 1906 lub nowszej do wykonywania konserwacji programu WSUS, Configuration Manager wykonuje oczyszczanie po synchronizacji przy użyciu podejścia odgórnego. W tym scenariuszu można zaplanować wykonywanie kopii zapasowej bazy danych programu WSUS i ponowne wdrażanie zadań przed skonfigurowanym harmonogramem synchronizacji, nie martwiąc się o żadne inne kroki, ponieważ Configuration Manager będzie obsługiwać wszystko inne.
Aby dowiedzieć się więcej na temat funkcji rozłączenia przestrzeni nazw, zapoznaj się z następującymi artykułami:
- Punkt aktualizacji oprogramowania
- Konserwacja aktualizacji oprogramowania w Configuration Manager