Neuerstellen von Systemdatenbanken
Gilt für:SQL Server
Systemdatenbanken müssen neu erstellt werden, um Beschädigungsprobleme in den Master-, Modell-, Msdb- oder Ressourcensystemdatenbanken zu beheben oder die Standardsortierung auf Serverebene zu ändern. Dieser Artikel enthält schrittweise Anleitungen zum Neuerstellen von Systemdatenbanken in SQL Server.
Beschränkungen und Einschränkungen
Wenn die master
Datenbanken , model
, msdb
und tempdb
Systemdatenbanken neu erstellt werden, werden die Datenbanken verworfen 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 Benutzeränderungen an diesen Datenbanken gehen verloren. Sie können beispielsweise benutzerdefinierte Objekte in der master
Datenbank, geplante Aufträge in msdb
oder Änderungen an den Standarddatenbankeinstellungen in der model
Datenbank haben.
Voraussetzungen
Führen Sie die folgenden Aufgaben aus, bevor Sie die Systemdatenbanken neu erstellen, um sicherzustellen, dass Sie die Systemdatenbanken mit ihren aktuellen Einstellungen wiederherstellen können.
Zeichnen Sie alle serverweiten Konfigurationswerte auf.
SELECT * FROM sys.configurations;
Notieren Sie alle Hotfixes, die auf die Instanz von SQL Server und die aktuelle Sortierung angewendet wurden. Sie müssen diese Hotfixes 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;
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 Systemdatenbank-Daten 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'));
Suchen Sie nach der aktuellen Sicherung der
master
Datenbanken ,model
undmsdb
verwenden Sie diese.Wenn die Instanz von SQL Server als Replikationsverteiler konfiguriert ist, suchen Sie die aktuelle Sicherung der
distribution
Datenbank.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.
Stellen Sie sicher, dass Kopien der
master
Dateien ,model
msdb
Daten und Protokolldateien auf dem lokalen Server vorhanden sind. Der Standardspeicherort für die Vorlagendateien istC:\Program Files\Microsoft SQL Server\MSSQL<xx>.MSSQLSERVER\MSSQL\Binn\Templates
(wo<xx>
befindet sich die version, die Sie installiert haben). 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 vom Installationsmedium. Um die Dateien auf dem Installationsmedium zu finden, navigieren Sie zum entsprechenden Plattformverzeichnis (x86 oder x64), und navigieren Sie dann zusetup\sql_engine_core_inst_msi\Pfiles\SqlServr\MSSQL.X\MSSQL\Binn\Templates
.
Neuerstellen von Systemdatenbanken
Im folgenden Verfahren werden die master
Datenbanken , model
, , msdb
und tempdb
Systemdatenbanken neu erstellt. Sie können die Systemdatenbanken nicht angeben, die neu erstellt werden sollen. Bei gruppierten Instanzen muss diese Prozedur auf dem aktiven Knoten ausgeführt werden, und die SQL Server-Ressource in der entsprechenden Clusteranwendungsgruppe muss offline ausgeführt werden, bevor die Prozedur ausgeführt wird.
Mit diesem Verfahren wird die resource
Datenbank nicht neu erstellt. Weitere Informationen finden Sie im Abschnitt "Neuerstellen der Ressourcensystemdatenbank " weiter unten in diesem Artikel.
Neuerstellen von Systemdatenbanken für eine Instanz von SQL Server
Fügen Sie das SQL Server-Installationsmedium in das Laufwerk ein, oder ändern Sie über eine Eingabeaufforderung Verzeichnisse in den Speicherort der
setup.exe
Datei auf dem lokalen Server. Für SQL Server 2022 (16.x) lautetC:\Program Files\Microsoft SQL Server\160\Setup Bootstrap\SQLServer2022
der Standardspeicherort auf dem Server.Geben Sie den folgenden Befehl in das Eingabeaufforderungsfenster ein. Die eckigen Klammern zeigen optionale Parameter an. Geben Sie die Klammern nicht ein. Wenn Sie Windows 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 werden soll. /ACTION=REBUILDDATABASE Gibt an, dass Setup die Systemdatenbanken neu erstellen soll. /INSTANCENAME=InstanceName Der Name der SQL Server-Instanz. 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\MyUserein. Wenn Sie ein Konto angeben, dessen Name ein Leerzeichen enthält, setzen Sie den Kontonamen in doppelte Anführungszeichen. Geben Sie beispielsweise NT AUTHORITY\SYSTEMein. [ /SAPWD=StrongPassword ] Gibt das Kennwort für das SQL Server sa-Konto an. Dieser Parameter ist erforderlich, wenn die Instanz den Modus "Gemischte Authentifizierung" (SQL Server und Windows-Authentifizierung) verwendet.
Sicherheitshinweis: Das Sa-Konto ist ein bekanntes SQL Server-Konto und wird häufig von böswilligen Benutzern verwendet. Es ist wichtig, dass Sie ein sicheres Kennwort für die sa-Anmeldung verwenden.
Geben Sie diesen Parameter nicht für den Windows-Authentifizierungsmodus 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.
Wichtig: Das Ändern der Sortierung auf Serverebene ändert nicht die Sortierung vorhandener Benutzerdatenbanken. Alle neu erstellten Benutzerdatenbanken verwenden standardmäßig die neue Sortierung.
Weitere Informationen finden Sie unter Festlegen oder Ändern der Serversortierung.[ /SQLTEMPDBFILECOUNT=NumberOfFiles ] Gibt die Anzahl der tempdb
Datendateien an. Dieser Wert kann auf bis zu 8 bzw. auf die Anzahl von Kernen erhöht werden, je nachdem, welcher Wert größer ist.
Standardwert: 8 oder die Anzahl von Kernen, je nachdem, welcher Wert niedriger ist.[ /SQLTEMPDBFILESIZE=FileSizeInMB ] Gibt die Anfangsgröße jeder tempdb
Datendatei in MB an. Das Setup ermöglicht eine Größe von bis zu 1024 MB.
Standardwert: 8[ /SQLTEMPDBFILEGROWTH=FileSizeInMB ] Gibt das Dateivergrößerungsinkrement jeder tempdb
-Datendatei in MB an. Der Wert 0 zeigt an, dass die automatische Vergrößerung deaktiviert ist und kein zusätzlicher Platz zulässig ist. Das Setup ermöglicht eine Größe von bis zu 1024 MB.
Standardwert: 64[ /SQLTEMPDBLOGFILESIZE=FileSizeInMB ] Gibt die Anfangsgröße der tempdb
-Protokolldatei in MB an. Das Setup ermöglicht eine Größe von bis zu 1024 MB.
Standardwert: 8.
Zulässiger Bereich: Min = 8, Max = 1024.[ /SQLTEMPDBLOGFILEGROWTH=FileSizeInMB ] Gibt das Dateivergrößerungsinkrement jeder tempdb
-Protokolldatei in MB an. Der Wert 0 zeigt an, dass die automatische Vergrößerung deaktiviert ist und kein zusätzlicher Platz zulässig ist. Das Setup ermöglicht eine Größe von bis zu 1024 MB.
Standardwert: 64
Zulässiger Bereich: Min = 8, Max = 1024.[ /SQLTEMPDBDIR=Directories ] Gibt die Verzeichnisse für tempdb
-Datendateien an. Wenn Sie mehr als ein Verzeichnis angeben, trennen Sie die Verzeichnisse mit einem Leerzeichen. Wenn mehrere Verzeichnisse angegeben sind, werden dietempdb
-Datendateien im Roundrobinverfahren auf die Verzeichnisse verteilt.
Standardwert: Systemdatenverzeichnis[ /SQLTEMPDBLOGDIR=Directory ] Gibt das Verzeichnis für die tempdb
Protokolldatei an.
Standardwert: SystemdatenverzeichnisWenn Setup die Neuerstellung der Systemdatenbanken abgeschlossen hat, wechselt es ohne Meldungen zur Eingabeaufforderung zurück. Lesen Sie die Protokolldatei Summary.txt, um zu überprüfen, ob der Prozess erfolgreich abgeschlossen wurde. Diese Datei befindet sich unter
C:\Program Files\Microsoft SQL Server\160\Setup Bootstrap\Logs
.Das Szenario "RebuildDatabase" löscht Systemdatenbanken und installiert sie erneut in einem sauberen Zustand. Da die Einstellung der Dateianzahl nicht beibehalten wird, wird der Wert der Anzahl der
tempdb
Dateien während destempdb
Setups nicht bekannt. Daher weiß das ebuildDatabase-Szenario nicht, wietempdb
viele Dateien gelesen werden sollen. Sie können den Wert der Anzahl dertempdb
Dateien erneut mit dem PARAMETER "SQLTEMPDBFILECOUNT" angeben. Wenn der Parameter nicht angegeben wird, fügt "RebuildDatabase" eine Standardanzahl vontempdb
Dateien hinzu, bei denen es sich um so vieletempdb
Dateien wie die CPU-Anzahl oder 8 handelt, je nachdem, welcher Wert niedriger ist.
Aufgaben nach der Neuerstellung
Nach der Neuerstellung der Datenbank müssen Sie möglicherweise die folgenden zusätzlichen Aufgaben ausführen:
Stellen Sie Ihre neuesten vollständigen Sicherungen der
master
,model
undmsdb
Datenbanken wieder her. Weitere Informationen finden Sie unter Sichern und Wiederherstellen von Systemdatenbanken (SQL Server).Wichtig
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 eine Sicherung nicht verfügbar ist oder die wiederhergestellte Sicherung nicht aktuell ist, erstellen Sie alle fehlenden Einträge erneut. Erstellen Sie beispielsweise alle fehlenden Einträge für Ihre Benutzerdatenbanken, Sicherungsgeräte, SQL Server-Anmeldungen, Endpunkte usw. erneut. Die beste Möglichkeit zur Neuerstellung der Einträge besteht darin, die ursprünglichen Skripts auszuführen, mit denen sie erstellt wurden.
Wichtig
Es wird empfohlen, Skripts vor unerlaubtem Zugriff zu schützen. Auf diese Weise können Sie verhindern, dass sie von nicht autorisierten Personen geändert werden.
Wenn die Instanz von SQL Server als Replikationsverteiler konfiguriert ist, müssen Sie die
distribution
Datenbank wiederherstellen. Weitere Informationen finden Sie unter Sichern und Wiederherstellen von replizierten 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.
Neuerstellen der resource
Datenbank
Im folgenden Verfahren wird die resource
Systemdatenbank neu erstellt. Wenn Sie die resource
Datenbank neu erstellen, gehen alle Hot Fixes verloren und müssen daher erneut angewendet werden.
Neuerstellen der resource
Systemdatenbank
Starten Sie das SQL Server-Setupprogramm (
setup.exe
) über die Verteilungsmedien.Wählen Sie im linken Navigationsbereich "Wartung" und dann " Reparieren" aus.
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 erfüllt. Wählen Sie "OK" oder "Installieren" aus, um den Vorgang fortzusetzen.
Wählen Sie auf der Seite "Instanz auswählen" die instanz aus, die repariert werden soll, und wählen Sie dann "Weiter" aus.
Die Reparaturregeln werden ausgeführt, um den Vorgang zu überprüfen. Wählen Sie zum Fortsetzen des Vorgangs Weiter aus.
Wählen Sie auf der Seite "Bereit zum Reparieren" die Option "Reparieren" aus. Wenn die Seite Abgeschlossen angezeigt wird, wurde der Vorgang abgeschlossen.
Erstellen einer neuen msdb
Datenbank
Wenn die msdb
Datenbank beschädigt oder vermutet wird und Sie keine Sicherung der msdb
Datenbank haben, können Sie ein neues msdb
erstellen, indem Sie das instmsdb
Skript verwenden.
Warnung
Wenn Sie die msdb
Datenbank mithilfe des instmsdb.sql
Skripts neu erstellen, werden alle Informationen, die in msdb
Aufträgen, Warnungen, Operatoren, Wartungsplänen, Sicherungsverlauf, Richtlinienbasierte Verwaltungseinstellungen, Datenbank-E-Mail, Performance Data Warehouse usw. gespeichert sind, beseitigt.
Beenden Sie alle Dienste, die eine Verbindung mit dem Datenbankmodul herstellen, einschließlich SQL Server-Agent, SSRS, SSIS und allen Anwendungen, die SQL Server als Datenspeicher verwenden.
Starten Sie SQL Server über die Befehlszeile mit dem Befehl:
NET START MSSQLSERVER /T3608
Weitere Informationen finden Sie unter Starten, Beenden, Anhalten, Fortsetzen und Neustarten von SQL Server-Diensten. Informationen zur Ablaufverfolgungskennzeichnung 3608 finden Sie unter TF3608.
Trennen Sie die
msdb
Datenbank in einem anderen Befehlszeilenfenster, indem Sie den folgenden Befehl ausführen und durch die Instanz von SQL Server ersetzen<servername>
:SQLCMD -E -S<servername> -dmaster -Q"EXEC sp_detach_db msdb"
Benennen Sie die Datenbankdateien mithilfe des Windows-Explorers um
msdb
. Standardmäßig befinden sich diese im DATA-Unterordner für die SQL Server-Instanz.Beenden Und starten Sie den Datenbankmoduldienst mit SQL Server Configuration Manager ohne zusätzliche Ablaufverfolgungskennzeichnungen, und starten Sie den Dienst neu.
Stellen Sie in einem Eingabeaufforderungsfenster eine Verbindung mit SQL Server her, und führen Sie den Befehl aus:
SQLCMD -E -S<servername> -i"C:\Program Files\Microsoft SQL Server\MSSQLXX.INSTANCE_NAME\MSSQL\Install\instmsdb.sql" -o"C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\Install\instmsdb.out"
Ersetzen Sie durch
<servername>
die Instanz des Datenbankmoduls. Verwenden Sie den Dateisystempfad der Instanz von SQL Server. Ersetzen SieMSSQLXX.INSTANCE_NAME
außerdem durch das Verzeichnis, das Ihrer Version und Instanz entspricht.Öffnen Sie die Datei mit dem Windows Editor,
instmsdb.out
und überprüfen Sie die Ausgabe auf Fehler.Wenden Sie alle auf der Instanz installierten CUs erneut an, wodurch die
msdb
Datenbank auf die aktuelle CU-Ebene aktualisiert wird.Erstellen Sie den in der
msdb
Datenbank gespeicherten Benutzerinhalt neu, z. B. Aufträge, Warnungen und andere Elemente.Sichern Sie die
msdb
Datenbank.
Neuerstellen der tempdb
Datenbank
Wenn die tempdb
Datenbank beschädigt oder verdächtig ist und das Datenbankmodul nicht gestartet werden kann, können Sie neu erstellen tempdb
, ohne dass alle Systemdatenbanken neu erstellt werden müssen.
Benennen Sie die aktuellen
tempdb.mdf
dateien umtemplog.ldf
, wenn sie nicht fehlen.Starten Sie SQL Server über eine Eingabeaufforderung mithilfe des folgenden Befehls.
sqlservr -c -f -T3608 -T4022 -s <instance> -mSQLCMD
Verwenden Sie für einen Standardinstanznamen
MSSQLSERVER
die Verwendung für benannte InstanzenMSSQL$<instance_name>
. Ablaufverfolgungsflag 4022 deaktiviert die Ausführung von gespeicherten Startprozeduren. Dies-mSQLCMD
ermöglicht nur sqlcmd.exe , eine Verbindung mit dem Server herzustellen. Weitere Informationen finden Sie unter "Weitere Startoptionen".Hinweis
Stellen Sie sicher, dass das Eingabeaufforderungsfenster nach dem Start von SQL Server geöffnet bleibt. Das Schließen des Eingabeaufforderungsfensters beendet den Prozess.
Stellen Sie mithilfe von sqlcmd eine Verbindung mit dem Server her, und verwenden Sie dann die folgende gespeicherte Prozedur, um den Status der
tempdb
Datenbank zurückzusetzen.exec master..sp_resetstatus tempdb
Beenden Sie den Server, indem Sie in das Eingabeaufforderungsfenster drücken
Ctrl
+C
.Starten Sie den SQL Server-Dienst neu. Dadurch wird eine neue Gruppe von
tempdb
Datenbankdateien erstellt und dietempdb
Datenbank wiederhergestellt.
Problembehandlung bei Neuerstellungsfehlern
Syntaxfehler und andere Laufzeitfehler werden im Eingabeaufforderungsfenster angezeigt. Überprüfen Sie die SETUP-Anweisung auf folgende Syntaxfehler:
Fehlendes Schrägstrichzeichen (
/
) vor jedem Parameternamen.Fehlendes Gleichheitszeichen (
=
) zwischen dem Parameternamen und dem Parameterwert.Leerzeichen zwischen dem Parameternamen und dem Gleichheitszeichen
Vorhandensein von Kommas (
,
) oder anderen Zeichen, die in der Syntax nicht angegeben sind.
Überprüfen Sie nach Abschluss des Neuerstellungsvorgangs die SQL Server-Protokolle auf Fehler. Der Standardspeicherort des Protokolls lautet C:\Program Files\Microsoft SQL Server\160\Setup Bootstrap\Logs
. 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
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für