WSUS Assistent für die Serverbereinigung bricht mit Datenbankfehler ab „Serverknoten zurücksetzen“

Problem

assistent-wsus-serverbereinigungDie Update-Bereinigung des 2008er WSUS Serverdienstes bricht nach langer Laufzeit ab. Der Assistent läuft bei hoher CPU-Auslastung sehr lange, tut aber augenscheinlich nichts. Es werden keine Updates entfernt und der Asistent bleubt nach einer Weile mit einem Timeout-Fehler stehen.

Fehlermeldung:

Beim ausführen eines Datenbankvorganges ist ein Fehler aufgetreten. Dies kann geschehen, wenn die Datenbank sehr ausgelastet, der Datenbankdienst beendet wurde oder die Verbindung mit der Datenbank getrennt wurde.

 

Lösung

Wenn die Windows-eigene SQL-Instanz (WSSEE) aus dem Lieferumfangt genutzt wird, muss hier erst der pipe-Zugriff erlaubt werden („piped pipes“). Per Default ist der Zugriff abgeschaltet.

  1. Den „SQL Server Configuration Manager“ (im Lieferumfang vom SQL Management Studio) installieren, starten
  2. Protokolle für „MICROSOFT##SSEE“ auswählen in den Eigenschaften das „Instanz verstecken“-Feld auf „nein“ stellen.
  3. Dienst neu Starten
  4. SQL Server Configuration Manager >  SQL Native Client Konfiguration > Aliase >  Rechtsklick auf den Alias „<servername>\Microsoft##SSEE“ > Eigenschaften
  5. Den Aliasnamen ändern, von „<servername>\Microsoft##SSEE“ zu „<servername>\##SSEE“

Dann kann man sich mit dem SQL Server Management Studio (oder einem anderen SQL-Client) zu der Instanz verbinden. Wer einen ausgewachsenen SQL-Server nutzt, kann dies selbstverständlich auch sofort tun.

  1. Mit dem SQL Management Studio zur entsprechenden SQL-Instanz verbinden
    1. Die SQL-Express Instanz aus dem WSSEE heisst „\\.\pipe\MSSQL$MICROSOFT##SSEE\sql\query“ (einfach in das ‚Servername‘ Feld eingeben). Unter Windows Server 2012: „\\.\pipe\MICROSOFT##WID\tsql\query“
    2. Für die WSSEE die „Named Pipes“ unter den Netzwerkprotokollen > Verbindungseinstellungen auswählen
  2. Diese Query ausführen:
    USE SUSDB;
    exec spGetObsoleteUpdatesToCleanup;
    
  3. Das Ergebnis ist in der Regel eine lange Liste von obsoleten Update-ID-Nummern. In den meisten Fällen „klemmt“ nur ein Update (i.d.R. die erste oder letzte ID in der Liste), nach dessen Entfernung der Assistent wieder problemlos funktioniert. Updates entfernen:
    exec spDeleteUpdate @localUpdateID=<ID-Nummer des Updates>

Update: Seit Windows Server 2012 sieht der Verbindungsalias etwas anders aus.

Microsoft SQL Server (MSSQL) model, tempdb, msdb und master Datenbank verschieben

Kann man die Systemdatenbanken (master, model, msdb, tempdb) im Dateisystem verschieben, zum Beispiel auf ein anderes Laufwerk ?Ja. Im laufenden Betrieb? Nein.

So verschiebt man die Systemdatenbanken MODEL, MASTER und MSDB

Wo befinden sich die Datenbankdateien im Moment?

sql-systemdatenbanken-verschieben

SELECT name, physical_name FROM sys.master_files WHERE database_id = DB_ID(N’model’);
  1. Neuen physikalischen Pfad für model, msdb und tempdb festlegen:
    USE master;
    -- model Datenbank verschieben
    ALTER DATABASE model MODIFY FILE (NAME = modeldev, FILENAME = "E:\SQL-DB\model.mdf");
    ALTER DATABASE model MODIFY FILE (NAME = modellog, FILENAME = "E:\SQL-DB\modellog.ldf");
    -- msdb Datenbank verschieben
    ALTER DATABASE msdb MODIFY FILE (NAME = MSDBData, FILENAME = "E:\SQL-DB\MSDBData.mdf");
    ALTER DATABASE msdb MODIFY FILE (NAME = MSDBLog, FILENAME =  "E:\SQL-DB\MSDBLog.ldf");
    -- tempdb Datenbank verschieben
    ALTER DATABASE TempDB MODIFY FILE (NAME = Tempdev, FILENAME = "E:\SQL-DB\tempdb.mdf");
    ALTER DATABASE TempDB MODIFY FILE (NAME = Templog, FILENAME = "E:\SQL-DB\templog.ldf");
    
  2. SQL Server Dienst beenden
  3. Dateien im Dateisystem verschieben
  4. SQL Server Dienst starten

So verschiebt man die Systemdatenbank MASTER

  1. SQL Konfigurationsmanager öffnen
  2. Links in der Baumansicht auf „SQL Server Dienste“
  3. Rechts die Eigenschaften von „SQL Server (INSTANZNAME)“ öffnen
  4. Auf dem Tab „Startparameter“ die Pfade auf die neuen Zielpfade ändern
    1. ACHTUNG, BUG in SQL 2012/2014: Der „Aktualisieren“ Knopf lässt keine Pfade zu, die ein Minuszeichen enthalten („Ungültiger Parameter“).
    2. Wenn der Pfad ein Minuszeichen enthält, muss man den Pfad in der Registry direkt bearbeiten:
      HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQLServer\Parameters
  5. SQL-Server Dienst beenden
  6. Dateien im Dateisystem verschieben
  7. SQL-Server Dienst startensql-masterdatenbank-verschieben

Anmeldeinformationsverwaltung („Tresor“) für gespeicherte Kennwörter unter Windows Vista / Server 2008

Problem

Mit Windows 7 und Server 2008R2 wurde das Systemsteuerungs-Applet „Anmeldeinformationsverwaltung“ (oder auch Tresor) eingeführt, der gespeicherte Anmeldedaten verwaltet. Unter Vista/2008 existiert diese anwendung aber noch nicht.

anmeldeinformationsverwaltunganmeldeinformationsverwaltung-applet

 

Lösung

Das Applet gibt es in früheren Versionen zwar nicht, aber es gibt die „Stored Usernames and passworts“ Dialogbox.

c:\> rundll32.exe keymgr.dll, KRShowKeyMgr

DomainKeys Identified Mail (DKIM) in Office365 aktivieren

DomainKeys Identified Mail (oder auch kurz „DomainKeys“) ist ein Identifikationsprotokoll zur Sicherstellung der Authentizität von E-Mail-Absendern, das zwar ursprünglich von Yahoo entwickelt wurde, aber 2004 etwa weitere Verbreitung findet. Im wesentlichen veröffentlich man via DNS seinen Mailserver-PublicKey und die SMTP-Haaderangaben bei ausgehenden Mails werden vom MTA mit den zugehörigen private Key verschlüsselt. Der Empfänger(server) kann im DNS nachschlagen und die Header lesbar machen. Damit ist die Identität des Absenders einer Nachricht sichergestellt.

Eine gute Erfindung, macht das an und nutzt das auch.

In Office365 ist das einfach umgesetzt und schnell erledigt:

  1. Eigenen domainGUID aus dem Portal besorgen.
    1. ENTWEDER aus dem MX-Eintrag: DOMAINGUID.mail.protection.outlook.com
    2. ODER: Office365 Portal > Admin Center > Exchange > Schutz > dkim > Domain auswählen, rechts auf „aktivieren“. In der gelben Meldung steht die DomanGUID drin:
    3. office365-dkim-dns-eintraege
  2. Der TENANT-NAME ist der Name, der beim einrichten von Office365 vergeben wurde, zum Beispiel „meinefirma“(.onmicrosoft.com). Das kann man unter „Domains“ im Portal nachsehen.
  3. Veröffentlichen der DKIM-Verweise via DNS. Das geht komfortabel über CNAME-Einträge die auf Server von Microsoft verweisen, eigene Schlüsselpaare zu generieren ist nicht notwendig:
    Host:     selector1._domainkey
    Ziel:     selector1-<domainGUID>._domainkey.<TENANT-NAME>
    TTL:      3600
    
    Host:     selector2._domainkey
    Ziel:     selector2-<domainGUID>._domainkey.<TENANT-NAME>
    TTL:      3600
    
  4. Nach 10 Minuten (in etwa) reicht dann der Klick auf „aktivieren“ im Office365 DKIM-center.

Ergänzung: Copy+Pasta für BIND. DomainGUI ist „contoso“, der Tenant heisst „contoso-com“.

selector1._domainkey.contoso.com IN CNAME selector1-contoso-com._domainkey.contoso.onmicrosoft.com
selector2._domainkey.contoso.com IN CNAME selector2-contoso-com._domainkey.contoso.onmicrosoft.com

selector1._domainkey.fabrikam.com IN CNAME selector1-fabrikam-com._domainkey.contoso.onmicrosoft.com
selector2._domainkey.fabrikam.com IN CNAME selector2-fabrikam-com._domainkey.contoso.onmicrosoft.com