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 hilfreich sein:

  • Fehlerwiederherstellung. Die Datenbank befindet sich beispielsweise im verdächtigen Modus oder wurde aufgrund eines Hardwarefehlers heruntergefahren.

  • Geplante Umsiedlung.

  • Verlagerung für geplante Festplattenwartung.

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

Für die Verfahren in diesem Thema ist der logische Name der Datenbankdateien erforderlich. Um den Namen abzurufen, fragen Sie die Namensspalte in der sys.master_files Katalogansicht ab.

Von Bedeutung

Wenn Sie eine Systemdatenbank verschieben und die Masterdatenbank später neu erstellen, müssen Sie die Systemdatenbank erneut verschieben, da der Neuerstellungsvorgang alle Systemdatenbanken an ihrem Standardspeicherort installiert.

In diesem Themenbereich

Geplantes Umsiedlungs- und geplantes Datenträgerwartungsverfahren

Führen Sie die folgenden Schritte aus, um eine Systemdatenbankdaten oder Protokolldatei als Teil eines geplanten Umzugs oder geplanten Wartungsvorgangs zu verschieben. Dieses Verfahren gilt für alle Systemdatenbanken mit Ausnahme der Master- und Ressourcendatenbanken.

  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 beenden Sie das System, um Die Wartung durchzuführen. Weitere Informationen finden Sie unter "Start", "Beenden", "Anhalten", "Fortsetzen", "Neustarten" des Datenbankmoduls, des SQL Server-Agents oder des SQL Server-Browserdiensts.

  3. Verschieben Sie die Datei oder Dateien an den neuen Speicherort.

  4. Starten Sie die Instanz von SQL Server oder dem Server neu. Weitere Informationen finden Sie unter "Start", "Beenden", "Anhalten", "Fortsetzen", "Neustarten" des Datenbankmoduls, des SQL Server-Agents oder des SQL Server-Browserdiensts.

  5. Überprüfen Sie die Dateiänderung, indem Sie die folgende Abfrage ausführen.

    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 diese zusätzlichen Schritte aus.

  1. Stellen Sie sicher, dass der Dienstbroker 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 des Service Brokers finden Sie unter ALTER DATABASE (Transact-SQL).

  2. Überprüfen Sie, ob Datenbank-E-Mail funktioniert, indem Sie eine Test-E-Mail senden.

Fehlerwiederherstellungsprozedur

Wenn eine Datei aufgrund eines Hardwarefehlers verschoben werden muss, führen Sie die folgenden Schritte aus, um die Datei an einen neuen Speicherort zu verschieben. Dieses Verfahren gilt für alle Systemdatenbanken mit Ausnahme der Master- und Ressourcendatenbanken.

Von Bedeutung

Wenn die Datenbank nicht gestartet werden kann, d. h. im verdächtigen Modus oder in einem nicht wiederhergestellten Zustand, können nur Mitglieder der festen Rolle "sysadmin" die Datei verschieben.

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

  2. Starten Sie die Instanz von SQL Server im Master-only-Wiederherstellungsmodus, indem Sie einen der folgenden Befehle an der Eingabeaufforderung ausführen. Bei den in diesen Befehlen angegebenen Parametern wird die Groß-/Kleinschreibung beachtet. Die Befehle schlagen fehl, wenn die Parameter nicht wie dargestellt 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 "Start", "Beenden", "Anhalten", "Fortsetzen", "Neustarten" des Datenbankmoduls, des SQL Server-Agents oder des SQL Server-Browserdiensts.

  3. Verwenden Sie sqlcmd-Befehle oder SQL Server Management Studio, um die folgende Anweisung auszuführen, damit jede Datei verschoben werden kann.

    ALTER DATABASE database_name MODIFY FILE( NAME = logical_name , FILENAME = 'new_path\os_file_name' )  
    

    Weitere Informationen zur Verwendung des sqlcmd-Hilfsprogramms finden Sie unter Verwenden des sqlcmd-Hilfsprogramms.

  4. Beenden Sie das sqlcmd-Hilfsprogramm oder SQL Server Management Studio.

  5. Beenden Sie die Instanz von SQL Server. Führen Sie beispielsweise aus NET STOP MSSQLSERVER.

  6. Verschieben Sie die Datei oder Dateien an den neuen Speicherort.

  7. Starten Sie die Instanz von SQL Serverneu. Führen Sie beispielsweise aus NET START MSSQLSERVER.

  8. Überprüfen Sie die Dateiänderung, indem Sie die folgende Abfrage ausführen.

    SELECT name, physical_name AS CurrentLocation, state_desc  
    FROM sys.master_files  
    WHERE database_id = DB_ID(N'<database_name>');  
    

Verschieben der Masterdatenbank

Führen Sie die folgenden Schritte aus, um die Masterdatenbank zu verschieben.

  1. Zeigen Sie im Startmenü auf "Alle Programme", zeigen Sie auf Microsoft SQL Server, zeigen Sie auf "Konfigurationstools", und klicken Sie dann auf SQL Server Configuration Manager.

  2. Klicken Sie im Knoten SQL Server Services mit der rechten Maustaste auf die Instanz 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 -d Parameter 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 für die Datendatei muss dem -d Parameter entsprechen, und der Wert für die Protokolldatei muss dem -l Parameter entsprechen. Das folgende Beispiel zeigt die Parameterwerte für den Standardspeicherort der Masterdatendatei.

    -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 die geplante Verlagerung für die Masterdatendatei lautet E:\SQLData, werden die Parameterwerte wie folgt geändert:

    -dE:\SQLData\master.mdf

    -lE:\SQLData\mastlog.ldf

  6. Beenden Sie die Instanz von SQL Server, indem Sie mit der rechten Maustaste auf den Namen der Instanz 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 Masterdatenbank, 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 oder auf einen anderen Server mit einem anderen Laufwerkbuchstaben verschoben haben, führen Sie die folgenden Updates aus.

  • Ändern Sie den SQL Server-Agent-Protokollpfad. Wenn Sie diesen Pfad nicht aktualisieren, kann der SQL Server-Agent nicht gestartet werden.

  • Ändern Sie den Standardspeicherort der Datenbank. Das Erstellen einer neuen Datenbank schlägt möglicherweise fehl, wenn der laufwerksbuchstaben und der Pfad, der als Standardspeicherort angegeben ist, nicht vorhanden sind.

Ändern des SQL Server-Agent-Protokollpfads

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

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

  3. Geben Sie im Dialogfeld " SQL Server-Agent-Fehlerprotokolle konfigurieren " den neuen Speicherort des SQLAGENT an. OUT-Datei. Der Standardspeicherort ist "C:\Programme\Microsoft SQL Server\MSSQL12".<>instance_name\MSSQL\Log\.

Ändern des Standardspeicherorts der Datenbank

  1. Klicken Sie im Objekt-Explorer in SQL Server Management Studio mit der rechten Maustaste auf den SQL Server-Server, und klicken Sie dann auf "Eigenschaften".

  2. Wählen Sie im Dialogfeld "Servereigenschaften " die Option "Datenbankeinstellungen" aus.

  3. Navigieren Sie unter "Standardspeicherorte der Datenbank" zu dem neuen Speicherort für die Daten- und Protokolldateien.

  4. Beenden Und starten Sie den SQL Server-Dienst, um die Änderung abzuschließen.

Beispiele

Ein. Verschieben der tempdb-Datenbank

Im folgenden Beispiel werden die tempdb Daten und Protokolldateien im Rahmen einer geplanten Verlagerung an einen neuen Speicherort verschoben.

Hinweis

Da tempdb jedes Mal neu erstellt wird, wenn die Instanz von SQL Server gestartet wird, müssen Sie die Daten und Protokolldateien nicht physisch verschieben. Die Dateien werden am neuen Speicherort erstellt, wenn der Dienst in Schritt 3 neu gestartet wird. Bis der Dienst neu gestartet wird, verwendet tempdb weiterhin die Daten und Protokolldateien am vorhandenen Speicherort.

  1. Ermitteln Sie die logischen Dateinamen der tempdb Datenbank und den 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 jeder Datei mithilfe des 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 neu.

  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 tempdb.mdf- und templog.ldf-Dateien vom ursprünglichen Speicherort.

Siehe auch

Ressourcendatenbank
tempdb-Datenbank
Masterdatenbank
msdb-Datenbank
Modelldatenbank
Verschieben von Benutzerdatenbanken
Verschieben von Datenbankdateien
Starten, Beenden, Anhalten, Fortsetzen und Neustarten der Datenbank-Engine, SQL Server-Agent oder des SQL Server-Browsers
ÄNDERE DATENBANK (Transact-SQL)
Neuerstellen von Systemdatenbanken