Diese Dokumentation wurde archiviert und wird nicht länger gepflegt.

Verschieben von Systemdatenbanken

Aktualisiert: 17. November 2008

In diesem Thema wird beschrieben, wie Systemdatenbanken in SQL Server 2005 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 im Rahmen dieses Themas wird der logische Name der Datenbankdateien benötigt. Zum Abrufen des Namens führen Sie eine Abfrage für die Namensspalte in der sys.master_files-Katalogsicht durch.

ms345408.note(de-de,SQL.90).gifWichtig:
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 Standort installiert werden. Weitere Informationen zum Neuerstellen der master-Datenbank finden Sie im Abschnitt zum Neuerstellen von Systemdatenbanken und Neuerstellen der Registrierung unter Vorgehensweise: Installieren von SQL Server 2005 von der Eingabeaufforderung.

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 die folgende Anweisung für jede zu verschiebende Datei 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 bzw. Dateien an den neuen Speicherort.
  4. Starten Sie die SQL Server-Instanz 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 wurde und die SQL Server-Instanz für Datenbank-E-Mail konfiguriert ist, führen Sie zusätzlich die folgenden Schritte aus.

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

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.

ms345408.note(de-de,SQL.90).gifWichtig:
Wenn die Datenbank nicht gestartet werden kann, das heißt, 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 SQL Server-Instanz, sofern sie gestartet wurde.
  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 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 Dienstprogramms sqlcmd finden Sie unter Verwendung des Dienstprogramms "sqlcmd".
  4. Beenden Sie das sqlcmd-Dienstprogramm 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 bzw. Dateien 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>');
    

Die Resource-Datenbank ist vom Speicherort der master-Datenbank abhängig. Die Resource-Daten und -Protokolldateien müssen zusammen und am selben Speicherort wie die master-Datendatei (master.mdf) abgelegt werden. Daher müssen Sie beim Verschieben der master-Datenbank auch die Resource-Datenbank an denselben Speicherort wie die master-Datendatei verschieben. Speichern Sie die Resource-Datenbank nicht in komprimierten oder verschlüsselten Ordnern des NTFS-Dateisystems. Dies würde die Leistung beeinträchtigen und Aktualisierungen verhindern.

Zum Verschieben der master- und Resource-Datenbanken 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 2005-Dienste mit der rechten Maustaste auf die Instanz von SQL Server (z. B. SQL Server (MSSQLSERVER)), und wählen Sie Eigenschaften.
  3. Klicken Sie im Dialogfeld Eigenschaften von SQL Server (instance_name) auf die Registerkarte Erweitert.
  4. Bearbeiten Sie die Werte unter Startparameter so, dass sie auf den geplanten Speicherort für die Daten- und Protokolldateien der master-Datenbank 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 master-Daten- und Protokolldateien dargestellt.
    -dC:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\DATA\master.mdf;-eC:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\LOG\ERRORLOG;-lC:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\DATA\mastlog.ldf
    
    Wenn der geplante Speicherort für die master-Daten- und Protokolldateien E:\SQLData lautet, werden die Parameterwerte folgendermaßen geändert:
    -dE:\SQLData\master.mdf;-eC:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\LOG\ERRORLOG;-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 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).
  8. Führen Sie beim Verwenden der sqlcmd-Befehle oder von SQL Server Management Studio die folgenden Anweisungen aus. Ändern Sie den FILENAME-Pfad so, dass er mit dem neuen Speicherort der master-Datendatei übereinstimmt. Der Name der Datenbank oder der Dateien darf nicht geändert werden.
    ALTER DATABASE mssqlsystemresource 
        MODIFY FILE (NAME=data, FILENAME= 'new_path_of_master\mssqlsystemresource.mdf');
    GO
    ALTER DATABASE mssqlsystemresource 
        MODIFY FILE (NAME=log, FILENAME= 'new_path_of_master\mssqlsystemresource.ldf');
    GO
    
  9. Verschieben Sie die Dateien mssqlsystemresource.mdf und mssqlsystemresource.ldf an den neuen Speicherort.
  10. Legen Sie die Resource-Datenbank durch Ausführen der folgenden Anweisung auf schreibgeschützt fest.
    ALTER DATABASE mssqlsystemresource SET READ_ONLY;
    
  11. Beenden Sie das sqlcmd-Dienstprogramm oder SQL Server Management Studio.
  12. Beenden Sie die Instanz von SQL Server.
  13. Starten Sie die Instanz von SQL Server neu.
  14. Überprüfen Sie die Dateiänderung für die master-Datenbank, indem Sie die folgende Abfrage ausführen. Die Metadaten der Resource-Datenbank können nicht mithilfe der Systemkatalogsichten oder Systemtabellen angezeigt werden.
    SELECT name, physical_name AS CurrentLocation, state_desc
    FROM sys.master_files
    WHERE database_id = DB_ID('master');
    GO
    

A. Verschieben der tempdb-Datenbank

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

ms345408.note(de-de,SQL.90).gifHinweis:
Da tempdb jedes Mal neu erstellt wird, wenn die Instanz von SQL Server gestartet wird, müssen Sie die Daten- und Protokolldateien nicht physikalisch verschieben. Die Dateien werden im neuen Speicherort erstellt, sobald der Dienst in Schritt 3 neu gestartet wird. Bis der Dienst neu gestartet wird, werden die Daten und Protokolldateien von tempdb weiterhin am bisherigen Speicherort verwendet.

  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.

Version Verlauf

17. November 2008

Aktualisierter Inhalt:
  • Die Anforderung, dass Resource-Daten und -Protokolldateien am selben Speicherort wie die master-Datendatei abgelegt werden müssen, wurde hinzugefügt.

14. April 2006

Neuer Inhalt:
  • Ein wichtiger Hinweis zum Verschieben von Systemdatenbanken nach einer Neuerstellung der master-Datenbank wurde hinzugefügt.
Aktualisierter Inhalt:
  • Die Beschreibung des Verfahrens zum Verschieben der master- und der Resource-Datenbank wurde geändert.

Anzeigen: