Verschieben von Systemdatenbanken
In diesem Thema wird beschrieben, wie Systemdatenbanken in SQL Server verschoben werden. Das Verschieben von Systemdatenbanken kann in den folgenden Situationen nützlich sein:
Wiederherstellung nach einem Fehler. Wenn z. B. die Datenbank aufgrund eines Hardwarefehlers als fehlerverdächtig eingestuft oder heruntergefahren wurde.
Eine geplante Verschiebung.
Verschiebung wegen einer geplanten Datenträgerwartung.
Die folgenden Verfahren gelten für das Verschieben von Datenbankdateien innerhalb derselben Instanz von SQL Server. Zum Verschieben einer Datenbank in eine andere Instanz von SQL Server oder auf einen anderen Server können Sie die Vorgänge Sichern und Wiederherstellen oder Trennen und Anfügen verwenden.
Für die Prozeduren in diesem Thema ist der logische Name der Datenbankdateien erforderlich. Zum Abrufen des Namens führen Sie eine Abfrage für die name-Spalte in der sys.master_files-Katalogsicht aus.
Wichtig |
---|
Wenn Sie eine Systemdatenbank verschieben und anschließend die master-Datenbank neu erstellen, müssen Sie die Systemdatenbank erneut verschieben, da bei der Neuerstellung alle Systemdatenbanken an ihrem standardmäßigen Speicherort installiert werden. |
In diesem Thema
Prozedur zur geplanten Verschiebung und planmäßigen Datenträgerwartung
Prozedur zur Wiederherstellung nach Fehlern
Verschieben der master-Datenbank
Verschieben der resource-Datenbank
Nachverfolgung: Nach dem Verschieben aller Systemdatenbanken
Beispiele
Prozedur zur geplanten Verschiebung und planmäßigen Datenträgerwartung
Zum Verschieben von Systemdatenbankdaten- oder Protokolldateien im Rahmen einer geplanten Verschiebung oder planmäßiger Wartungsarbeiten führen Sie die folgenden Schritte aus: Diese Prozedur gilt für alle Systemdatenbanken mit Ausnahme der master-Datenbank und der Resource-Datenbank.
Führen Sie für jede zu verschiebende Datei die folgende Anweisung aus.
ALTER DATABASE database_name MODIFY FILE ( NAME = logical_name , FILENAME = 'new_path\os_file_name' )
Beenden Sie die Instanz von SQL Server, oder fahren Sie das System für die Wartungsarbeiten herunter. Weitere Informationen finden Sie unter Starten, Beenden, Anhalten, Fortsetzen und Neustarten des Datenbankmoduls, SQL Server-Agent oder des SQL Server-Browsers.
Verschieben Sie die Datei(en) an den neuen Speicherort.
Starten Sie die Instanz von SQL Server oder den Server neu. Weitere Informationen finden Sie unter Starten, Beenden, Anhalten, Fortsetzen und Neustarten des Datenbankmoduls, SQL Server-Agent oder des SQL Server-Browsers.
Überprüfen Sie die Dateiänderung durch Ausführen der folgenden Abfrage.
SELECT name, physical_name AS CurrentLocation, state_desc FROM sys.master_files WHERE database_id = DB_ID(N'<database_name>');
Wenn die msdb-Datenbank verschoben wird und die SQL Server-Instanz für Datenbank-E-Mail konfiguriert ist, führen Sie zusätzlich die folgenden Schritte aus.
Überprüfen Sie mit der folgenden Abfrage, ob Service Broker für die msdb-Datenbank aktiviert ist.
SELECT is_broker_enabled FROM sys.databases WHERE name = N'msdb';
Weitere Informationen zum Aktivieren von Service Broker finden Sie unter ALTER DATABASE (Transact-SQL).
Überprüfen Sie, ob Datenbank-E-Mail funktionsfähig ist, indem Sie eine Test-E-Mail senden.
[Nach oben]
Prozedur zur Wiederherstellung nach Fehlern
Wenn eine Datei aufgrund eines Hardwarefehlers verschoben werden muss, müssen Sie die folgenden Schritte ausführen, um die Datei an einen neuen Speicherort zu verschieben: Diese Prozedur gilt für alle Systemdatenbanken mit Ausnahme der master-Datenbank und der Resource-Datenbank.
Wichtig |
---|
Wenn die Datenbank nicht gestartet werden kann (d. h. wenn sie als fehlerverdächtig eingestuft wurde oder sich in einem nicht wiederhergestellten Status befindet), können nur Mitglieder der festen Rolle sysadmin die Datei verschieben. |
Beenden Sie die Instanz von SQL Server, wenn sie gestartet ist.
Starten Sie die SQL Server-Instanz im ausschließlichen Wiederherstellungsmodus der master-Datenbank durch Eingeben der folgenden Befehle an der Eingabeaufforderung. Bei den in diesen Befehlen angegebenen Parametern wird nach Groß- und Kleinschreibung unterschieden. Die Befehle werden nicht ausgeführt, wenn die Parameter nicht wie gezeigt angegeben werden.
Führen Sie für die Standardinstanz (MSSQLSERVER) den folgenden Befehl aus:
NET START MSSQLSERVER /f /T3608
Führen Sie für eine benannte Instanz den folgenden Befehl aus:
NET START MSSQL$instancename /f /T3608
Weitere Informationen finden Sie unter Starten, Beenden, Anhalten, Fortsetzen und Neustarten des Datenbankmoduls, SQL Server-Agent oder des SQL Server-Browsers.
Verwenden Sie für jede zu verschiebende Datei die sqlcmd-Befehle oder SQL Server Management Studio, um die folgende Anweisung auszuführen:
ALTER DATABASE database_name MODIFY FILE( NAME = logical_name , FILENAME = 'new_path\os_file_name' )
Weitere Informationen zum Verwenden des Hilfsprogramms sqlcmd finden Sie unter Verwenden des Hilfsprogramms sqlcmd.
Beenden Sie das Hilfsprogramm sqlcmd oder SQL Server Management Studio.
Beenden Sie die Instanz von SQL Server. Führen Sie dazu z. B. NET STOP MSSQLSERVER aus.
Verschieben Sie die Datei(en) an den neuen Speicherort.
Starten Sie die Instanz von SQL Server neu. Führen Sie dazu z. B. NET START MSSQLSERVER aus.
Überprüfen Sie die Dateiänderung durch Ausführen der folgenden Abfrage.
SELECT name, physical_name AS CurrentLocation, state_desc FROM sys.master_files WHERE database_id = DB_ID(N'<database_name>');
[Nach oben]
Verschieben der master-Datenbank
Führen Sie die folgenden Schritte aus, um die master-Datenbank zu verschieben.
Zeigen Sie im Menü Start auf Alle Programme, auf Microsoft SQL Server 2005, auf Konfigurationstools, und klicken Sie dann auf SQL Server-Konfigurations-Manager.
Klicken Sie im Knoten SQL Server-Dienste mit der rechten Maustaste auf die Instanz von SQL Server (z. B. SQL Server (MSSQLSERVER)), und wählen Sie Eigenschaften aus.
Klicken Sie im Dialogfeld Eigenschaften von SQL Server (instance_name) auf die Registerkarte Startparameter.
Wählen Sie im Feld Vorhandene Parameter den –d-Parameter aus, um die master-Datendatei zu verschieben. Klicken Sie auf Aktualisieren, um die Änderung zu speichern.
Ändern Sie im Feld Startparameter angeben den Parameter in den neuen Pfad der master-Datenbank.
Wählen Sie im Feld Vorhandene Parameter den –l-Parameter aus, um die master-Protokolldatei zu verschieben. Klicken Sie auf Aktualisieren, um die Änderung zu speichern.
Ändern Sie im Feld Startparameter angeben den Parameter in den neuen Pfad der master-Datenbank.
Der Parameterwert der Datendatei muss dem -d-Parameter und der Wert der Protokolldatei muss dem -l-Parameter entsprechen. Im folgenden Beispiel werden die Parameterwerte für den Standardspeicherort der master-Datendatei dargestellt.
-dC:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\DATA\master.mdf
-lC:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\DATA\mastlog.ldf
Wenn der geplante Speicherort für das Verschieben der master-Datendatei E:\SQLData lautet, werden die Parameterwerte folgendermaßen geändert:
-dE:\SQLData\master.mdf
-lE:\SQLData\mastlog.ldf
Beenden Sie die Instanz von SQL Server, indem Sie mit der rechten Maustaste auf den Instanznamen klicken und Beenden wählen.
Verschieben Sie die Dateien master.mdf und mastlog.ldf an den neuen Speicherort.
Starten Sie die Instanz von SQL Server neu.
Überprüfen Sie die Dateiänderung für die master-Datenbank, indem Sie die folgende Abfrage ausführen.
SELECT name, physical_name AS CurrentLocation, state_desc FROM sys.master_files WHERE database_id = DB_ID('master'); GO
Verschieben der Ressourcendatenbank
Der Speicherort der Datenbank Resource ist <drive>:\Programme\Microsoft SQL Server\MSSQL11.<instance_name>\MSSQL\Binn\. Die Datenbank kann nicht verschoben werden.
[Nach oben]
Nachverfolgung: Nach dem Verschieben aller Systemdatenbanken
Wenn Sie alle Systemdatenbanken auf ein neues Laufwerk oder Volume bzw. auf einen anderen Server mit einem anderen Laufwerkbuchstaben verschoben haben, führen Sie die folgenden Updates aus.
Ändern Sie den Pfad des SQL Server-Agent-Protokolls. Wenn Sie diesen Pfad nicht aktualisieren, kann SQL Server-Agent nicht gestartet werden.
Ändern Sie den Standardspeicherort der Datenbank. Beim Erstellen einer neuen Datenbank kann ein Fehler auftreten, wenn der als Standardspeicherort angegebene Laufwerkbuchstabe und Pfad nicht vorhanden ist.
Ändern des Pfads des SQL Server-Agent-Protokolls
Erweitern Sie in SQL Server Management Studio im Objekt-Explorer SQL Server-Agent.
Klicken Sie mit der rechten Maustaste auf Fehlerprotokolle, und klicken Sie auf Konfigurieren.
Geben Sie im Dialogfeld Fehlerprotokolle des SQL Server-Agents konfigurieren den neuen Speicherort der Datei SQLAGENT.OUT an. Der Standardspeicherort ist C:\Programme\Microsoft SQL Server\MSSQL11.<instance_name>\MSSQL\Log\.
Ändern des Standardspeicherorts der Datenbank
Klicken Sie in SQL Server Management Studio im Objekt-Explorer mit der rechten Maustaste auf den SQL Server-Server, und klicken Sie dann auf Eigenschaften.
Wählen Sie im Dialogfeld Servereigenschaften die Option Datenbankeinstellungen aus.
Wechseln Sie unter Standardspeicherorte für Datenbank zum neuen Speicherort sowohl für die Daten- als auch die Protokolldatei.
Starten und beenden Sie den SQL Server-Dienst, um die Änderung abzuschließen.
[Nach oben]
Beispiele
A.Verschieben der tempdb-Datenbank
Im folgenden Beispiel werden die tempdb-Daten- und Protokolldatei im Rahmen einer geplanten Verschiebung an einen neuen Speicherort verschoben.
Hinweis |
---|
Da tempdb jedes Mal neu erstellt wird, wenn die Instanz von SQL Server gestartet wird, müssen die Daten- und Protokolldateien nicht physisch verschoben werden. Die Dateien werden am neuen Speicherort erstellt, sobald der Dienst in Schritt 3 neu gestartet wird. Bis der Dienst neu gestartet wird, verwendet tempdb weiterhin die Daten und die Protokolldateien des vorhandenen Speicherorts. |
Ermitteln Sie die logischen Dateinamen der tempdb-Datenbank und ihren aktuellen Speicherort auf dem Datenträger.
SELECT name, physical_name AS CurrentLocation FROM sys.master_files WHERE database_id = DB_ID(N'tempdb'); GO
Ändern Sie den Speicherort der einzelnen Dateien mithilfe von ALTER DATABASE.
USE master; GO ALTER DATABASE tempdb MODIFY FILE (NAME = tempdev, FILENAME = 'E:\SQLData\tempdb.mdf'); GO ALTER DATABASE tempdb MODIFY FILE (NAME = templog, FILENAME = 'F:\SQLLog\templog.ldf'); GO
Beenden Sie die Instanz von SQL Server, und starten Sie sie erneut.
Überprüfen Sie die Dateiänderung.
SELECT name, physical_name AS CurrentLocation, state_desc FROM sys.master_files WHERE database_id = DB_ID(N'tempdb');
Löschen Sie die Dateien tempdb.mdf und templog.ldf am ursprünglichen Speicherort.
[Nach oben]
Siehe auch
Verweis
Konzepte
Verschieben von Benutzerdatenbanken
Neuerstellen von Systemdatenbanken