Freigeben über


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:

  • Bei der Wiederherstellung nach Fehlern. Wenn z. B. die Datenbank aufgrund eines Hardwarefehlers als fehlerverdächtig eingestuft oder heruntergefahren wurde.

  • Bei geplanter Verschiebung.

  • Verschiebung aufgrund planmäßiger Datenträgerwartung.

Die folgenden Verfahren gelten für das Verschieben von Datenbankdateien innerhalb desselben instance SQL Server. Um eine Datenbank in eine andere instance von SQL Server oder auf einen anderen Server zu verschieben, verwenden Sie die Vorgänge zum Sichern und Wiederherstellen oder Trennen und Anfügen.

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 Namensspalte 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

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- und Resource-Datenbanken.

  1. 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' )  
    
  2. 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 von SQL Server-Diensten.

  3. Verschieben Sie die Datei(en) an den neuen Speicherort.

  4. Starten Sie die Instanz von SQL Server oder den Server neu. Weitere Informationen finden Sie unter Starten, Beenden, Anhalten, Fortsetzen und Neustarten von SQL Server-Diensten.

  5. Ü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 instance von SQL Server für Datenbank-E-Mail konfiguriert ist, führen Sie die folgenden zusätzlichen Schritte aus.

  1. Stellen Sie sicher, dass Service Broker für die msdb-Datenbank aktiviert ist, indem Sie die folgende Abfrage ausführen.

    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).

  2. Überprüfen Sie, ob Datenbank-E-Mail funktionsfähig ist, indem Sie eine Test-E-Mail senden.

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- und Resource-Datenbanken.

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.

  1. Beenden Sie die Instanz von SQL Server , wenn sie gestartet ist.

  2. 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 von SQL Server-Diensten.

  3. 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 sqlcmd -Hilfsprogramms finden Sie unter Verwenden des Hilfsprogramms „sqlcmd“.

  4. Starten Sie das Hilfsprogramm sqlcmd oder SQL Server Management Studio.

  5. Beenden Sie die Instanz von SQL Server. Führen Sie dazu z. B. NET STOP MSSQLSERVERaus.

  6. Verschieben Sie die Datei(en) an den neuen Speicherort.

  7. Starten Sie die Instanz von SQL Serverneu. Führen Sie dazu z. B. NET START MSSQLSERVERaus.

  8. Ü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>');  
    

Verschieben der master-Datenbank

Führen Sie die folgenden Schritte aus, um die master-Datenbank zu verschieben.

  1. Zeigen Sie im Menü Start auf Alle Programme, auf Microsoft SQL Server 2005, auf Konfigurationstools, und klicken Sie dann auf SQL Server-Konfigurations-Manager.

  2. Klicken Sie im Knoten SQL Server Dienste mit der rechten Maustaste auf die instance von SQL Server (z. B. SQL Server (MSSQLSERVER)), und wählen Sie Eigenschaften aus.

  3. Klicken Sie im Dialogfeld SQL Server (instance_name) Eigenschaften auf die Registerkarte Startparameter.

  4. Wählen Sie im Feld Vorhandene Parameter den Parameter „-d“aus, um die Masterdatendatei zu verschieben. Klicken Sie auf Aktualisieren , um die Änderung zu speichern.

    Ändern Sie im Feld Startparameter angeben den Parameter in den neuen Pfad der Masterdatenbank.

  5. Wählen Sie im Feld Vorhandene Parameter den Parameter „-l“aus, um die Masterprotokolldatei zu verschieben. Klicken Sie auf Aktualisieren , um die Änderung zu speichern.

    Ändern Sie im Feld Startparameter angeben den Parameter in den neuen Pfad der Masterdatenbank.

    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 Masterdatendatei dargestellt.

    -dC:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\DATA\master.mdf

    -lC:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\DATA\mastlog.ldf

    Wenn der geplante Speicherort für das Verschieben der Masterdatendatei E:\SQLDatalautet, werden die Parameterwerte folgendermaßen geändert:

    -dE:\SQLData\master.mdf

    -lE:\SQLData\mastlog.ldf

  6. Beenden Sie die instance von SQL Server, indem Sie mit der rechten Maustaste auf den namen des instance klicken und Beenden auswählen.

  7. Verschieben Sie die Dateien master.mdf und mastlog.ldf an den neuen Speicherort.

  8. Starten Sie die Instanz von SQL Serverneu.

  9. Ü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 Ressourcendatenbank lautet <laufwerk>:\Programme\Microsoft SQL Server\MSSQL-Version<>.<Instance_name>\MSSQL\Binn\. Die Datenbank kann nicht verschoben werden.

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

  1. Erweitern Sie in SQL Server Management Studio im Objekt-Explorer SQL Server-Agent.

  2. Klicken Sie mit der rechten Maustaste auf Fehlerprotokolle , und klicken Sie auf Konfigurieren.

  3. 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\MSSQL12.<>instance_name\MSSQL\Log\.

Ändern des Standardspeicherorts der Datenbank

  1. 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.

  2. Wählen Sie im Dialogfeld Servereigenschaften die Option Datenbankeinstellungenaus.

  3. Wechseln Sie unter Standardspeicherorte für Datenbankzum neuen Speicherort sowohl für die Daten- als auch die Protokolldatei.

  4. Starten und beenden Sie den SQL Server-Dienst, um die Änderung abzuschließen.

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 instance von SQL Server gestartet wird, müssen Sie die Daten- und Protokolldateien nicht physisch verschieben. 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.

  1. 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  
    
  2. Ä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  
    
  3. Beenden Sie die Instanz von SQL Server, und starten Sie sie erneut.

  4. Ü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');  
    
  5. Löschen Sie die Dateien tempdb.mdf und templog.ldf am ursprünglichen Speicherort.

Weitere Informationen

Ressourcendatenbank
tempdb-Datenbank
master-Datenbank
msdb-Datenbank
model-Datenbank
Verschieben von Benutzerdatenbanken
Verschieben von Datenbankdateien
Starten, Beenden, Anhalten, Fortsetzen und Neustarten der Datenbank-Engine, SQL Server-Agent oder des SQL Server-Browsers
ALTER DATABASE (Transact-SQL)
Neuerstellen von Systemdatenbanken