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 aufgrund einer geplanten Datenträgerwartung.

In diesem Thema

Vorbereitungen

Prozedur zur geplanten Verschiebung und planmäßigen Datenträgerwartung

Prozedur zur Wiederherstellung nach Fehlern

Prozedur zum Verschieben der master-Datenbank

Nachverfolgung: Nach dem Verschieben aller Systemdatenbanken

Beispiel für das Verschieben der tempdb-Datenbank

Vorbereitungen

Lesen Sie die folgenden Informationen, bevor Sie die in diesem Thema definierten Prozeduren implementieren.

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.

Die Ressourcendatenbank kann nicht verschoben werden.

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.

Wichtiger HinweisWichtig

Wenn Sie eine Systemdatenbank verschieben und die master-Datenbank später neu erstellen, müssen Sie die Systemdatenbank erneut verschieben, weil durch die Neuerstellung alle Systemdatenbanken an ihrem Standardort installiert werden. Weitere Informationen zum Neuerstellen der master-Datenbank finden Sie im Abschnitt zum Neuerstellen von Systemdatenbanken und Registrierung in Vorgehensweise: Installieren von SQL Server 2008 R2 von der Eingabeaufforderung.

Pfeilsymbol, dass mit dem Link 'Zurück zum Anfang' verwendet wird[Nach oben]

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 außer master und Resource.

  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 Beenden von 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 und Neustarten von 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 und die SQL Server-Instanz für Datenbank-E-Mail konfiguriert wird, 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. Weitere Informationen finden Sie unter Problembehandlung bei Datenbank-E-Mail.

Pfeilsymbol, dass mit dem Link 'Zurück zum Anfang' verwendet wird[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 außer master und Resource.

Wichtiger HinweisWichtig

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 Vorgehensweise: Starten einer Instanz von SQL Server (net-Befehle).

  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 zur Verwendung des sqlcmd-Hilfsprogramms finden Sie unter Verwendung des Hilfsprogramms "sqlcmd".

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

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

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

  7. Starten Sie die Instanz von SQL Server neu. Führen Sie dazu z. B. NET START MSSQLSERVER aus.

  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>');
    

Pfeilsymbol, dass mit dem Link 'Zurück zum Anfang' verwendet wird[Nach oben]

Prozedur zum Verschieben der master-Datenbank

Zum Verschieben der master-Datenbank führen Sie die folgenden Schritte aus.

  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 Instanz von SQL Server (z. B. SQL Server (MSSQLSERVER)), und wählen Sie Eigenschaften aus.

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

  4. Bearbeiten Sie die Werte Startparameter, um auf den geplanten Speicherort für die Daten- und Protokolldateien der master-Datenbank zu verweisen, und klicken Sie auf OK. Das Verschieben der Fehlerprotokolldatei ist optional.

    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 Daten- und Protokolldateien der master-Datenbank angezeigt.

    -dC:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\master.mdf
    -lC:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\
    DATA\mastlog.ldf
    

    Wenn der geplante Speicherort für die Daten- und Protokolldateien der master-Datenbank E:\SQLData lautet, werden die Parameterwerte wie folgt geändert:

    -dE:\SQLData\master.mdf
    -lE:\SQLData\mastlog.ldf
    
  5. Beenden Sie die Instanz von SQL Server, indem Sie mit der rechten Maustaste auf den Instanznamen klicken und Beenden wählen.

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

  7. Starten Sie die Instanz von SQL Server neu.

  8. Ü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
    

Pfeilsymbol, dass mit dem Link 'Zurück zum Anfang' verwendet wird[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

  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 SQLAGENT.OUT-Datei an. Der Standardspeicherort ist C:\Programme\Microsoft SQL Server\MSSQL10_50.<Instanzname>\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 Datenbankeinstellungen aus.

  3. Wechseln Sie unter Standardspeicherorte für Datenbank zum 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.

Pfeilsymbol, dass mit dem Link 'Zurück zum Anfang' verwendet wird[Nach oben]

Beispiele

A. Verschieben der tempdb-Datenbank

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

HinweisHinweis

Da tempdb bei jedem Start des SQL Server-Diensts neu erstellt 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 Protokolldatei am vorhandenen Speicherort. Nachdem Sie den SQL Server-Dienst neu gestartet haben, können Sie die alten Daten- und Protokolldateien für tempdb am ursprünglichen Speicherort löschen.

  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 vom ursprünglichen Speicherort.

Pfeilsymbol, dass mit dem Link 'Zurück zum Anfang' verwendet wird[Nach oben]