Seitenindex umschalten Seiten: 1 [2]  Thema versendenDrucken
Heißes Thema (mehr als 10 Antworten) WSUS 3.0 SP2 erzeugt erhebliche Last auf SQL-Server (Gelesen: 7780 mal)
MartinG
WSUS Junior Member
*
Offline



Beiträge: 41
Mitglied seit: 11.09.09
Geschlecht: männlich
Re: WSUS 3.0 SP2 erzeugt erhebliche Last auf SQL-Server
Antwort #15 - 14.09.09 um 14:54:20
Beitrag drucken  
Diese Anleitung beschreibt, wie man WSUS in einem nicht an das Internet angeschlossenen Server einrichtet:
(Du musst Dich Einloggen oder Registrieren um Multimediadateien oder Links zu sehen).

Daran werde ich mich nun orientieren, um den WSUS neu zu installieren mit der WID anstatt dem SQL-Server als Backend. So stelle ich mir das vor:
  • WSUS- und IIS-Dienste stoppen
  • Metadaten exportieren mit dem WSUSUtil, s. Anleitung
  • Deinstallieren, dabei Updates, Protokolle und die alte Datenbank behalten
  • Die Updates sicherheitshalber noch einmal sichern
  • WSUS neu installieren mit der WID
  • Dienste stoppen (damit kein Client dazwischenfunkt)
  • Metadaten importieren mit WSUSUtil
  • Updates und Metadaten abgleichen mit WSUSUtil reset
  • Dienste starten


Drückt mir die Daumen Zwinkernd
  
Zum Seitenanfang
 
Sunny
Microsoft MVP
*****
Offline



Beiträge: 15134
Mitglied seit: 11.02.07
Geschlecht: männlich
Re: WSUS 3.0 SP2 erzeugt erhebliche Last auf SQL-Server
Antwort #16 - 14.09.09 um 15:08:27
Beitrag drucken  
Jepp, ich drück dir Daumen. Zwinkernd
  
Zum Seitenanfang
 
MartinG
WSUS Junior Member
*
Offline



Beiträge: 41
Mitglied seit: 11.09.09
Geschlecht: männlich
Re: WSUS 3.0 SP2 erzeugt erhebliche Last auf SQL-Server
Antwort #17 - 16.09.09 um 11:32:46
Beitrag drucken  
Kurze Rückmeldung: der Ex- und Import mit dem WSUSUtil war dann doch nicht die richtige Idee, denn:
C:\Programme\Update Services\Tools>wsusutil help export
export Befehlsdetails:

Exportiert Updatemetadaten (aber keine Inhaltsdateien, Genehmigungen oder
Servereinstellungen
) in eine Exportpaketdatei. Durch das Importieren der
Paketdatei in einen anderen WSUS-Server kann der entsprechende Server
ohne eine Netzwerkverbindung synchronisiert werden.

export <Paket> <Protokolldatei>
<Paket>         : Pfad und Dateiname der zu erstellenden Paketkabinettdatei.
<Protokolldatei>: Pfad und Dateiname der zu erstellenden Protokolldatei


Aber gerade die Genehmigungen und möglichst auch die bereits erfassten Computer wollte ich ja behalten.

Also habe ich verschiedene Möglichkeiten getestet, letztlich erfolgreich war folgende:
  • WSUS deinstallieren, dabei Updates, Protokolle und die alte Datenbank behalten
  • Alle Tabellen der alten Datenbank mit dem Tool bcp exportieren
  • WSUS neu installieren mit der WID
  • Dienste WSUS und IIS stoppen
  • Alle Tabellen in der SUSDB innerhalb der WID leeren
  • Die Tabellen mit bcp wieder importieren (Optionen -q -k -E)
  • Dienste starten


War zwar ordentlich Gebastel, funktioniert aber wieder tadellos mit allen Einstellungen, Genehmigungen und Computern aus der alten Datenbank. Cool

Habe ausserdem Wartungspläne für das Backup und die Re-Indizierung sowie das Löschen der alten Synchronisierungen erstellt. Das SQL Server Management Studio vom SQL Server 2005 unterstützt die Wartungspläne nämlich auch für die Windows Internal Database, sehr praktisch.

Danke nochmal für eure Hilfe.
  
Zum Seitenanfang
 
Sunny
Microsoft MVP
*****
Offline



Beiträge: 15134
Mitglied seit: 11.02.07
Geschlecht: männlich
Re: WSUS 3.0 SP2 erzeugt erhebliche Last auf SQL-Server
Antwort #18 - 16.09.09 um 11:48:10
Beitrag drucken  
Vielen Dank für die ausführliche Rückmeldung. Zwinkernd

Mich würde eine ausführlichere Beschreibung des Exportes der Tabellen mit dem Tool bcp interessieren. Lässt sich das bewerkstelligen? Möchtest Du das als kleines HowTo erstellen damit das hier veröffentlicht werden kann? Alternativ kannst Du auch mir das in Kurzform zusenden, ich kann es ja dann ausführlicher erstellen. Wie Du möchtest. Zwinkernd
  
Zum Seitenanfang
 
MartinG
WSUS Junior Member
*
Offline



Beiträge: 41
Mitglied seit: 11.09.09
Geschlecht: männlich
Re: WSUS 3.0 SP2 erzeugt erhebliche Last auf SQL-Server
Antwort #19 - 16.09.09 um 12:53:20
Beitrag drucken  
Aber gerne doch.

bcp kommt als Teil der SQL Server-Tools, ich weiss nicht, ob man diese irgendwo einzeln oder im Paket herunterladen kann - beim SQL Server 2005 werden sie jedenfalls standardmässig mitinstalliert, und das Programm liegt im Verzeichnis C:\Programme\Microsoft SQL Server\90\Tools\Binn.

Support zu bcp:
(Du musst Dich Einloggen oder Registrieren um Multimediadateien oder Links zu sehen).


Zunächst habe ich im SQL Server Manager die Namen aller Tabellen in der SUSDB ausgeben lassen:
Code
select name from SUSDB..sysobjects where xtype = 'U'; 


Das Ergebnis habe ich in die Datei "tabellen.txt" kopiert (s. Anhang), Ausschnitt:
Code
tbAuthorization
tbAutoDeploymentRule
tbBundleAll
tbBundleAtLeastOne 



Nun müsste ich für jede Tabelle einzeln das bcp-Kommando ausführen. Da ich aber faul bin, habe ich dafür eine kleine Batchdatei geschrieben (export.bat, muss im gleichen Ordner wie die tabellen.txt liegen):
Code
@ECHO OFF

FOR /F %%a IN (tabellen.txt) DO (
	bcp SUSDB..%%a out %%a -S SERVERNAME -U BENUTZERNAME -P PASSWORT -n
) 


In der Datei muss ersetzt werden:
  • SERVERNAME -> der Hostname des SQL-Servers
  • BENUTZERNAME -> ein gültiger Benutzername auf dem SQL-Server, der auf die Datenbank SUSDB zugreifen darf
  • PASSWORT -> das dazugehörige Passwort

Anmerkung: unser SQL-Server nutzt die SQL-Server-Authentifizierung, d.h. die integrierte Benutzerdatenbank des SQL-Servers. Ist der SQL-Server auf Windows-Authentifizierung eingestellt und hat der Windows-Account, unter dem die Batchdatei gestartet wird, Zugriff auf die SUSDB, so kann man statt Benutzer und Passwort einfach die Option -T nutzen, was dann so aussieht:
Code
	bcp SUSDB..%%a out %%a -S SERVERNAME -T -n 



Egal welche Authentifizierung man nutzt, die Batchdatei tut folgendes: sie liest die "tabellen.txt" ein und führt für jede Zeile (also jeden Tabellennamen) das bcp-Kommando aus, welches die entsprechende Tabelle aus der Datenbank exportiert und im aktuellen Verzeichnis speichert. Die Option "-n" ist wichtig, damit der Datentyp der Spalten korrekt exportiert wird.


Anschliessend hat man also 106 Tabellen im aktuellen Verzeichnis liegen. Der Export dauert lange, besonders die letzte Tabelle (tbXml) ist sehr gross. Ich würde empfehlen, die Ausgabe der Batchdatei in eine Logdatei umzuleiten, damit man später nach Fehlern suchen oder nachlesen kann:
Code
C:\Temp\wsusexport> export.bat >>export_log.txt 




Die neue Datenbank in der WID muss zunächst geleert werden, bevor der Import gestartet werden kann. Hier habe ich (brachial!) einfach alle Tabellen geleert. Dabei gibt es Probleme mit den Constraints; das macht aber nichts, ich habe die angehängten Skripte (EDIT: siehe nächstes Posting) einfach wechselseitig so oft ausgeführt, bis alle Tabellen leer waren. Ja, das ist brachial und geht bestimmt auch eleganter. Schockiert/Erstaunt
Achtet darauf, wenn ihr diese Skripte ausführt, dass ihr in der richtigen Datenbank seid!


Um die Tabellen anschliessend in die neue (geleerte) Datenbank innerhalb der Windows Internal Database zu importieren, nutze ich eine ähnliche Batchdatei (import.bat):
Code
@ECHO OFF

FOR /F %%a IN (tabellen.txt) DO (
	echo --- Importiere Tabelle %%a ---
	bcp SUSDB..%%a in %%a -S \\.\pipe\MSSQL$MICROSOFT##SSEE\sql\query -T -n -q -k -E
	echo --- Tabelle %%a fertig importiert ---
) 


Als Servername wird nun der Name der WID genutzt, und da diese nur lokal verfügbar ist, muss die Batchdatei auf dem Server gestartet werden, auf dem die WID läuft. Da die WID nur die Windows-Authentifizierung kennt, muss hier mit -T gearbeitet werden. Die anderen Optionen müssen gesetzt werden, damit die Daten problemlos importiert werden können: -n übernimmt den Datentyp der Spalten korrekt, -q aktiviert "Quoted Identifiers", was für einige Tabellen benötigt wird, -k importiert auch NULL-Werte so, wie sie in der Original-Datenbank waren, und -E sorgt für die richtigen Identitätswerte.
(Siehe bcp-Supportseite für eine ausführlichere Beschreibung)

Am Besten loggt ihr auch den Import mit:
Code
C:\Temp\wsusexport> import.bat >>import_log.txt 




Nun sind alle Daten aus der SQL-Datenbank erfolgreich in die WID importiert worden. Cool
  
(Du musst Dich Einloggen oder Registrieren um Multimediadateien oder Links zu sehen). tabellen.txt (Anhang gelöscht)
Zum Seitenanfang
 
MartinG
WSUS Junior Member
*
Offline



Beiträge: 41
Mitglied seit: 11.09.09
Geschlecht: männlich
Re: WSUS 3.0 SP2 erzeugt erhebliche Last auf SQL-Server
Antwort #20 - 16.09.09 um 12:54:07
Beitrag drucken  
Das Forum erlaubt anscheinend nur 2 Anhänge, daher hier noch die Skripte zum Leeren der Datenbank.
  
(Du musst Dich Einloggen oder Registrieren um Multimediadateien oder Links zu sehen). sql_alle_tabellen_leeren_1.txt (Anhang gelöscht)
(Du musst Dich Einloggen oder Registrieren um Multimediadateien oder Links zu sehen). sql_alle_tabellen_leeren_2.txt (Anhang gelöscht)
Zum Seitenanfang
 
Sunny
Microsoft MVP
*****
Offline



Beiträge: 15134
Mitglied seit: 11.02.07
Geschlecht: männlich
Re: WSUS 3.0 SP2 erzeugt erhebliche Last auf SQL-Server
Antwort #21 - 16.09.09 um 13:41:26
Beitrag drucken  
Wow, herzlichen Dank von mir für diese ausführliche Beschreibung! Smiley Ich werde das in den nächsten Tagen versuchen auf einem WSUS mit Screenshots nachzuvollziehen. Dann kommt es in die HowTos.
  
Zum Seitenanfang
 
UMeadow
WSUS Spezialist
*****
Offline


I Love WSUS!

Beiträge: 1381
Standort: Berlin
Mitglied seit: 22.01.08
Geschlecht: männlich
Re: WSUS 3.0 SP2 erzeugt erhebliche Last auf SQL-Server
Antwort #22 - 16.09.09 um 16:59:04
Beitrag drucken  
Danke MartinG, super Arbeit.  Smiley
bcp.exe wird auch bei SQL-Server Express angeboten.
  
Zum Seitenanfang
 
Seitenindex umschalten Seiten: 1 [2] 
Thema versendenDrucken
Bookmarks: Facebook Google Google+ Linked in Twitter Yahoo
 



Nutzungsbedingungen | Datenschutz
Kontakt | RSS | Feedback | Impressum
Facebook | News einsenden