Neuerstellen von Systemdatenbanken

Systemdatenbanken müssen neu erstellt werden, um Beschädigungsprobleme bei den Systemdatenbanken master, model, msdb oder resource zu beheben oder die Standardsortierung auf Serverebene zu ändern. Dieses Thema enthält schrittweise Anweisungen für die Neuerstellung von Systemdatenbanken.

Vor der Neuerstellung von Systemdatenbanken

Bei der Neuerstellung der Systemdatenbanken master, model, msdb und tempdb werden die Datenbanken abgelegt und an ihrem ursprünglichen Speicherort neu erstellt. Wenn in der REBUILD-Anweisung eine neue Sortierung angegeben wird, werden die Systemdatenbanken unter Verwendung dieser Sortiereinstellung erstellt. Alle Änderungen von Benutzern an diesen Datenbanken gehen verloren. Beispielsweise kann die master-Datenbank benutzerdefinierte Objekte, die msdb-Datenbank geplante Aufträge und die model-Datenbank Änderungen der Standardeinstellungen für Datenbanken enthalten.

Führen Sie die folgenden Tasks aus, bevor Sie die Systemdatenbanken neu erstellen, um sicherzustellen, dass Sie die Systemdatenbanken mit ihren aktuellen Einstellungen wiederherstellen können.

  1. Zeichnen Sie alle serverweiten Konfigurationswerte auf.

    SELECT * FROM sys.configurations;
    
  2. Zeichnen Sie alle Service Packs und Hotfixes auf, die auf die Instanz von SQL Server und die aktuelle Sortierung angewendet werden. Sie müssen diese Updates erneut anwenden, nachdem Sie die Systemdatenbanken neu erstellt haben.

    SELECT
    SERVERPROPERTY('ProductVersion ') AS ProductVersion,
    SERVERPROPERTY('ProductLevel') AS ProductLevel,
    SERVERPROPERTY('ResourceVersion') AS ResourceVersion,
    SERVERPROPERTY('ResourceLastUpdateDateTime') AS ResourceLastUpdateDateTime,
    SERVERPROPERTY('Collation') AS Collation;
    
  3. Zeichnen Sie den aktuellen Speicherort aller Daten und Protokolldateien für die Systemdatenbanken auf. Durch die erneute Erstellung der Systemdatenbanken werden alle Systemdatenbanken an ihrem ursprünglichen Speicherort installiert. Wenn Sie System-Datenbankdaten oder Protokolldateien an einen anderen Speicherort verschoben haben, müssen Sie die Dateien erneut verschieben.

    SELECT name, physical_name AS current_file_location
    FROM sys.master_files
    WHERE database_id IN (DB_ID('master'), DB_ID('model'), DB_ID('msdb'), DB_ID('tempdb'));
    
  4. Suchen Sie die aktuelle Sicherung der Datenbanken master, model und msdb.

  5. Wenn die Instanz von SQL Server als Replikationsverteiler konfiguriert wird, suchen Sie die aktuelle Sicherung der Verteilungsdatenbank.

  6. Stellen Sie sicher, dass Sie die geeigneten Berechtigungen haben, um die Systemdatenbanken neu zu erstellen. Um diesen Vorgang ausführen zu können, müssen Sie Mitglied der festen Serverrolle sysadmin sein. Weitere Informationen finden Sie unter Rollen auf Serverebene.

  7. Überprüfen Sie, ob Kopien der Daten und Protokollvorlagendateien der Datenbanken master, model und msdb auf dem lokalen Server vorhanden sind. Der Standardspeicherort für die Vorlagendateien ist C:\Programme\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\Binn\Vorlagen. Diese Dateien werden während der Neuerstellung verwendet und müssen vorhanden sein, um Setup erfolgreich ausführen zu können. Wenn sie fehlen, führen Sie die Reparaturfunktion von Setup aus, oder kopieren Sie die Dateien manuell aus dem Installationsmedium. Um die Dateien auf dem Installationsmedium zu suchen, navigieren Sie zum entsprechenden Plattformverzeichnis (x86, x64 oder ia64) und dann zu setup\sql_engine_core_inst_msi\Pfiles\SqlServr\MSSQL.X\MSSQL\Binn\Vorlagen.

Vorgehensweise zum Neuerstellen der Systemdatenbanken

Mit der folgenden Vorgehensweise werden die Systemdatenbanken master, model, msdb und tempdb neu erstellt. Sie können die Systemdatenbanken nicht angeben, die neu erstellt werden sollen. Für gruppierte Instanzen muss diese Vorgehensweise für den aktiven Knoten ausgeführt werden, und die SQL Server-Ressource in der entsprechenden Clusteranwendungsgruppe muss zuvor offline geschaltet werden.

Durch diese Vorgehensweise wird die Datenbank resource nicht neu erstellt. Führen Sie hierzu die Schritte im Abschnitt "Vorgehensweise zum Neuerstellen der Ressourcendatenbank" weiter unten in diesem Thema aus.

So erstellen Sie Systemdatenbanken für eine Instanz von SQL Server neu

  1. Legen Sie das SQL Server 2008 R2-Installationsmedium in das Laufwerk ein.

  2. Geben Sie den folgenden Befehl in das Eingabeaufforderungsfenster ein. Die eckigen Klammern geben optionale Parameter an. Geben Sie den Befehl ohne die eckigen Klammern ein. Wenn Sie Windows Vista als Betriebssystem verwenden und die Benutzerkontensteuerung aktiviert ist, sind für die Ausführung des Setups erhöhte Rechte erforderlich. Die Eingabeaufforderung muss als Administrator ausgeführt werden.

    Setup /QUIET /ACTION=REBUILDDATABASE /INSTANCENAME=InstanceName /SQLSYSADMINACCOUNTS=accounts [ /SAPWD= StrongPassword ] [ /SQLCOLLATION=CollationName]

    Parametername

    Beschreibung

    /QUIET oder /Q

    Gibt an, dass Setup ohne Benutzeroberfläche ausgeführt wird.

    /ACTION=REBUILDDATABASE

    Gibt an, dass die Systemdatenbanken von Setup neu erstellt werden.

    /INSTANCENAME=InstanceName

    Der Name der Instanz von SQL Server. Geben Sie MSSQLSERVER für die Standardinstanz ein.

    /SQLSYSADMINACCOUNTS=accounts

    Gibt die Windows-Gruppen oder die individuellen Konten an, die der festen Serverrolle sysadmin hinzugefügt werden sollen. Wenn Sie mehr als ein Konto angeben, trennen Sie die Konten mit einem Leerzeichen. Geben Sie z. B. BUILTIN\Administrators MyDomain\MyUser ein. Wenn Sie ein Konto angeben, dessen Name ein Leerzeichen enthält, setzen Sie den Kontonamen in doppelte Anführungszeichen. Geben Sie beispielsweise NT-AUTORITÄT\SYSTEM ein.

    [ /SAPWD=StrongPassword ]

    Gibt das Kennwort für das SQL Serversa-Konto an. Dieser Parameter ist erforderlich, wenn die Instanz den gemischten Authentifizierungsmodus (SQL Server und Windows-Authentifizierung) verwendet. 

    SicherheitshinweisSicherheitshinweis
    Das sa-Konto ist ein bekanntes SQL Server-Konto und oft das Ziel böswilliger Benutzer. Es ist sehr wichtig, dass Sie ein sicheres Kennwort für die sa-Anmeldung verwenden.

    Geben Sie diesen Parameter für den Windows-Authentifizierungsmodus nicht an.

    [ /SQLCOLLATION=CollationName ]

    Gibt eine neue Sortierung auf Serverebene an. Dieser Parameter ist optional. Wenn keine Sortierung angegeben wird, wird die aktuelle Sortierung des Servers verwendet.

    Wichtiger HinweisWichtig
    Die Änderung der Sortierung auf Serverebene ändert die Sortierung vorhandener Benutzerdatenbanken nicht. Alle neu erstellten Benutzerdatenbanken verwenden die neue Sortierung standardmäßig.

    Weitere Informationen finden Sie unter Festlegen und Ändern der Serversortierung.

  3. Wenn Setup die Neuerstellung der Systemdatenbanken abgeschlossen hat, wechselt es ohne Meldungen zur Eingabeaufforderung zurück. Lesen Sie die Summary.txt-Protokolldatei, um zu überprüfen, ob der Prozess erfolgreich abgeschlossen wurde. Diese Datei befindet sich unter C:\Programme\Microsoft SQL Server\100\Setup Bootstrap\Logs.

Aufgaben nach der Neuerstellung

Nach der Neuerstellung der Datenbank müssen Sie möglicherweise die folgenden zusätzlichen Aufgaben ausführen:

  • Stellen Sie die letzten vollständigen Sicherungen der Datenbanken master, model und msdb wieder her. Weitere Informationen finden Sie unter Überlegungen zum Sichern und Wiederherstellen von Systemdatenbanken.

    Wichtiger HinweisWichtig

    Wenn Sie die Serversortierung geändert haben, stellen Sie die Systemdatenbanken nicht wieder her. Auf diese Weise wird die neue Sortierung durch die vorherige Sortiereinstellung ersetzt.

    Wenn keine Sicherung verfügbar ist, oder wenn die wiederhergestellte Sicherung nicht aktuell ist, erstellen Sie alle fehlenden Einträge neu. Erstellen Sie z. B. alle fehlenden Einträge für die Benutzerdatenbanken, Sicherungsmedien, SQL Server-Anmeldungen, Endpunkte usw. neu. Die beste Möglichkeit zur Neuerstellung der Einträge ist die Ausführung der ursprünglichen Skripts, mit denen sie erstellt wurden. 

SicherheitshinweisSicherheitshinweis

Es wird empfohlen, Sicherungen von Skripts zu erstellen. Auf diese Weise können Sie verhindern, dass sie von nicht autorisierten Personen geändert werden.

  • Sie müssen die Verteilungsdatenbank wiederherstellen, wenn die Instanz von SQL Server als Replikationsverteiler konfiguriert wird. Weitere Informationen finden Sie unter Sichern und Wiederherstellen replizierter Datenbanken.

  • Verschieben Sie die Systemdatenbanken an die Speicherorte, die Sie zuvor aufgezeichnet haben. Weitere Informationen finden Sie unter Verschieben von Systemdatenbanken.

  • Überprüfen Sie, ob die serverweiten Konfigurationswerte zu den Werten passen, die Sie zuvor aufgezeichnet haben.

Vorgehensweise zum Neuerstellen der Ressourcendatenbank

Mit der folgenden Vorgehensweise wird die Systemdatenbank resource neu erstellt. Wenn Sie die Datenbank resource neu erstellen, gehen alle Service Packs und Hotfixes verloren und müssen daher noch einmal angewendet werden.

So erstellen Sie die Ressourcensystemdatenbank neu:

  1. Starten Sie auf dem SQL Server 2008 R2-Verteilungsmedium das SQL Server-Setupprogramm (setup.exe).

  2. Klicken Sie im linken Navigationsbereich auf Wartung und dann auf Reparieren.

  3. Es werden Unterstützungsregeln für Setup und Dateiroutinen ausgeführt, um sicherzustellen, dass die erforderlichen Komponenten auf dem System installiert sind und dass der Computer den Setupüberprüfungsregeln entspricht. Klicken Sie zum Fortsetzen auf OK oder auf Installieren.

  4. Wählen Sie auf der Seite Instanz auswählen die zu reparierende Instanz aus, und klicken Sie dann zum Fortsetzen auf Weiter.

  5. Die Reparaturregeln werden ausgeführt, um den Vorgang zu überprüfen. Klicken Sie auf Weiter, um den Vorgang fortzusetzen.

  6. Klicken Sie auf der Seite Bereit zum Reparieren auf Reparieren. Wenn die Seite Abgeschlossen angezeigt wird, wurde der Vorgang abgeschlossen.

Erstellen einer neuen msdb-Datenbank

Wenn die msdb-Datenbank beschädigt ist, und Sie keine Sicherung der msdb-Datenbank vorgenommen haben, können Sie mit dem Skript instmsdb eine neue msdb-Datenbank erstellen.

VorsichtshinweisVorsicht

Beim Neuerstellen der msdb-Datenbank mit dem instmsdb-Skript werden alle in der msdb-Datenbank gespeicherten Informationen wie Aufträge, Warnungen, Operatoren, Wartungspläne, Sicherungsverläufe, Einstellungen für die richtlinienbasierte Verwaltung, Datenbank-E-Mails, Warehouse-Leistungsdaten usw. gelöscht.

  1. Beenden Sie alle Dienste mit einer Verbindung zu Database Engine (Datenbankmodul), einschließlich SQL Server-Agent, SSRS, SSIS und allen Anwendungen, die SQL Server als Datenspeicher verwenden.

  2. Starten Sie SQL Server über die Befehlszeile mit dem Befehl: NET START MSSQLSERVER /T3608

    Weitere Informationen finden Sie unter Vorgehensweise: Starten einer Instanz von SQL Server (net-Befehle).

  3. Trennen Sie in einem weiteren Befehlszeilenfenster die msdb-Datenbank, indem Sie den folgenden Befehl ausführen und dadurch <servername> durch die Instanz von SQL Server ersetzen: SQLCMD -E -S<servername> -dmaster -Q"EXEC sp_detach_db msdb"

  4. Benennen Sie im Windows Explorer die msdb-Datenbankdateien um. Diese befinden sich standardmäßig im DATA-Unterordner der SQL Server-Instanz.

  5. Verwenden Sie den SQL Server-Konfigurations-Manager zum Stoppen und erneuten Starten des Database Engine (Datenbankmodul)-Diensts.

  6. Stellen Sie in einem Befehlszeilenfenster eine Verbindung zu SQL Server her, und führen Sie folgenden Befehl aus: SQLCMD -E -S<servername> -i"C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\Install\instmsdb.sql" -o" C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\Install\instmsdb.out"

    Ersetzen Sie <servername> durch die Instanz von Database Engine (Datenbankmodul). Verwenden Sie den Dateisystempfad der SQL Server-Instanz.

  7. Öffnen Sie die Datei instmsdb.out im Windows-Editor, und prüfen Sie, ob die Ausgabe fehlerfrei ist.

  8. Wenden Sie alle installierten Service Packs und Hotfixes auf die Instanz an.

  9. Legen Sie den in der msdb-Datenbank gespeicherten Benutzer-Content wie Aufträge, Warnungen usw. erneut an.

  10. Sichern Sie die msdb-Datenbank.

Problembehandlung von Fehlern bei der Neuerstellung

Syntaxfehler und andere Laufzeitfehler werden im Eingabeaufforderungsfenster angezeigt. Überprüfen Sie die SETUP-Anweisung auf folgende Syntaxfehler:

  • Fehlender Schrägstrich (/) vor jedem Parameternamen.

  • Fehlendes Gleichheitszeichen (=) zwischen dem Parameternamen und dem Parameterwert.

  • Leerzeichen zwischen dem Parameternamen und dem Gleichheitszeichen.

  • Kommas (,) oder andere Zeichen, die nicht in der Syntax angegeben sind.

Wenn der Neuerstellungsvorgang abgeschlossen ist, überprüfen Sie die SQL Server-Protokolle auf Fehler. Der Standardprotokollspeicherort ist C:\Programme\Microsoft SQL Server\100\Setup Bootstrap\Protokolle. Um die Protokolldatei zu suchen, die die Ergebnisse des Neuerstellungsprozesses enthält, wechseln Sie über eine Eingabeaufforderung zum Ordner "Protokolle", und führen Sie dann findstr /s RebuildDatabase summary*.* aus. Diese Suche führt Sie zu den Protokolldateien, die die Ergebnisse der Neuerstellung der Systemdatenbanken enthalten. Öffnen Sie die Protokolldateien, und untersuchen Sie sie auf relevante Fehlermeldungen.

Siehe auch

Konzepte

Änderungsverlauf

Falsche Informationen in der Beschreibung für INSTANCENAME wurden entfernt. Eine benannte Instanz erfordert nicht die Angabe des Servernamens.

Aus dem Abschnitt "Aufgaben nach der Neuerstellung" wurde die Anforderungen zum Installieren des letzten Service Packs und aller geeigneten Hotfixes entfernt.

In Schritt 1 im Abschnitt "Vorgehensweise zum Neuerstellen der Systemdatenbanken" wurden Anweisungen entfernt, die sich auf das Verweisen auf setup.exe vom lokalen Server aus beziehen.

Abschnitt zum Erstellen einer neuen msdb-Datenbank wurde hinzugefügt.