Verschieben von SystemdatenbankenMove System Databases

Gilt für: JaSQL Server NeinAzure SQL-Datenbank NeinAzure Synapse Analytics (SQL DW) NeinParallel Data Warehouse APPLIES TO: yesSQL Server noAzure SQL Database noAzure Synapse Analytics (SQL DW) noParallel Data Warehouse

In diesem Thema wird beschrieben, wie Systemdatenbanken in SQL ServerSQL Serververschoben werden.This topic describes how to move system databases in SQL ServerSQL Server. Das Verschieben von Systemdatenbanken kann in den folgenden Situationen nützlich sein:Moving system databases may be useful in the following situations:

  • Bei der Wiederherstellung nach Fehlern.Failure recovery. Wenn z. B. die Datenbank aufgrund eines Hardwarefehlers als fehlerverdächtig eingestuft oder heruntergefahren wurde.For example, the database is in suspect mode or has shut down because of a hardware failure.

  • Bei geplanter Verschiebung.Planned relocation.

  • Verschiebung aufgrund planmäßiger Datenträgerwartung.Relocation for scheduled disk maintenance.

Die folgenden Verfahren gelten für das Verschieben von Datenbankdateien innerhalb derselben Instanz von SQL ServerSQL Server.The following procedures apply to moving database files within the same instance of SQL ServerSQL Server. Zum Verschieben einer Datenbank in eine andere Instanz von SQL ServerSQL Server oder auf einen anderen Server können Sie den Vorgang Sichern und Wiederherstellen verwenden.To move a database to another instance of SQL ServerSQL Server or to another server, use the backup and restore operation.

Für die Prozeduren in diesem Thema ist der logische Name der Datenbankdateien erforderlich.The procedures in this topic require the logical name of the database files. Zum Abrufen des Namens führen Sie eine Abfrage für die Namensspalte in der sys.master_files-Katalogsicht aus.To obtain the name, query the name column in the sys.master_files catalog view.

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.If you move a system database and later rebuild the master database, you must move the system database again because the rebuild operation installs all system databases to their default location.

Wichtig

Nach dem Verschieben der Dateien muss das SQL ServerSQL Server -Dienstkonto über Zugriffsberechtigungen für die Dateien an ihren neuen Speicherorten verfügen.After moving files, the SQL ServerSQL Server service account must have permission to access the files in new file folder location.

Prozedur zur geplanten Verschiebung und planmäßigen DatenträgerwartungPlanned Relocation and Scheduled Disk Maintenance Procedure

Zum Verschieben von Systemdatenbankdaten- oder Protokolldateien im Rahmen einer geplanten Verschiebung oder planmäßiger Wartungsarbeiten führen Sie die folgenden Schritte aus:To move a system database data or log file as part of a planned relocation or scheduled maintenance operation, follow these steps. Diese Prozedur gilt für alle Systemdatenbanken mit Ausnahme der master- und Resource-Datenbanken.This procedure applies to all system databases except the master and Resource databases.

  1. Führen Sie für jede zu verschiebende Datei die folgende Anweisung aus.For each file to be moved, run the following statement.

    ALTER DATABASE database_name MODIFY FILE ( NAME = logical_name , FILENAME = 'new_path\os_file_name' )  
    
  2. Beenden Sie die Instanz von SQL ServerSQL Server , oder fahren Sie das System für die Wartungsarbeiten herunter.Stop the instance of SQL ServerSQL Server or shut down the system to perform maintenance. Weitere Informationen finden Sie unter Starten, Beenden, Anhalten, Fortsetzen und Neustarten von SQL Server-Diensten.For more information, see Start, Stop, Pause, Resume, Restart the Database Engine, SQL Server Agent, or SQL Server Browser Service.

  3. Verschieben Sie die Datei(en) an den neuen Speicherort.Move the file or files to the new location.

  4. Starten Sie die Instanz von SQL ServerSQL Server oder den Server neu.Restart the instance of SQL ServerSQL Server or the server. Weitere Informationen finden Sie unter Starten, Beenden, Anhalten, Fortsetzen und Neustarten von SQL Server-Diensten.For more information, see Start, Stop, Pause, Resume, Restart the Database Engine, SQL Server Agent, or SQL Server Browser Service.

  5. Überprüfen Sie die Dateiänderung durch Ausführen der folgenden Abfrage.Verify the file change by running the following query.

    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 ServerSQL Server -Instanz für Datenbank-E-Mailkonfiguriert ist, führen Sie zusätzlich die folgenden Schritte aus.If the msdb database is moved and the instance of SQL ServerSQL Server is configured for Database Mail, complete these additional steps.

  1. Überprüfen Sie mit der folgenden Abfrage, ob Service BrokerService Broker für die msdb-Datenbank aktiviert ist.Verify that Service BrokerService Broker is enabled for the msdb database by running the following query.

    SELECT is_broker_enabled   
    FROM sys.databases  
    WHERE name = N'msdb';  
    

    Weitere Informationen zum Aktivieren von Service BrokerService Brokerfinden Sie unter ALTER DATABASE (Transact-SQL)verschoben werden.For more information about enabling Service BrokerService Broker, see ALTER DATABASE (Transact-SQL).

  2. Überprüfen Sie, ob Datenbank-E-Mail funktionsfähig ist, indem Sie eine Test-E-Mail senden.Verify that Database Mail is working by sending a test mail.

Prozedur zur Wiederherstellung nach FehlernFailure Recovery Procedure

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:If a file must be moved because of a hardware failure, follow these steps to relocate the file to a new location. Diese Prozedur gilt für alle Systemdatenbanken mit Ausnahme der master- und Resource-Datenbanken.This procedure applies to all system databases except the master and Resource databases.

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.If the database cannot be started, that is it is in suspect mode or in an unrecovered state, only members of the sysadmin fixed role can move the file.

  1. Beenden Sie die Instanz von SQL ServerSQL Server , wenn sie gestartet ist.Stop the instance of SQL ServerSQL Server if it is started.

  2. Starten Sie die SQL ServerSQL Server -Instanz im ausschließlichen Wiederherstellungsmodus der master-Datenbank durch Eingeben der folgenden Befehle an der Eingabeaufforderung.Start the instance of SQL ServerSQL Server in master-only recovery mode by entering one of the following commands at the command prompt. Bei den in diesen Befehlen angegebenen Parametern wird nach Groß- und Kleinschreibung unterschieden.The parameters specified in these commands are case sensitive. Die Befehle werden nicht ausgeführt, wenn die Parameter nicht wie gezeigt angegeben werden.The commands fail when the parameters are not specified as shown.

    • Führen Sie für die Standardinstanz (MSSQLSERVER) den folgenden Befehl aus:For the default (MSSQLSERVER) instance, run the following command:

      NET START MSSQLSERVER /f /T3608
      
    • Führen Sie für eine benannte Instanz den folgenden Befehl aus:For a named instance, run the following command:

      NET START MSSQL$instancename /f /T3608
      

    Weitere Informationen finden Sie unter Starten, Beenden, Anhalten, Fortsetzen und Neustarten von SQL Server-Diensten.For more information, see Start, Stop, Pause, Resume, Restart the Database Engine, SQL Server Agent, or SQL Server Browser Service.

  3. Verwenden Sie für jede zu verschiebende Datei die sqlcmd -Befehle oder SQL Server Management StudioSQL Server Management Studio , um die folgende Anweisung auszuführen:For each file to be moved, use sqlcmd commands or SQL Server Management StudioSQL Server Management Studio to run the following statement.

    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“.For more information about using the sqlcmd utility, see Use the sqlcmd Utility.

  4. Starten Sie das Hilfsprogramm sqlcmd oder SQL Server Management StudioSQL Server Management Studio.Exit the sqlcmd utility or SQL Server Management StudioSQL Server Management Studio.

  5. Beenden Sie die Instanz von SQL ServerSQL Server.Stop the instance of SQL ServerSQL Server. Führen Sie dazu z. B. NET STOP MSSQLSERVERaus.For example, run NET STOP MSSQLSERVER.

  6. Verschieben Sie die Datei(en) an den neuen Speicherort.Move the file or files to the new location.

  7. Starten Sie die Instanz von SQL ServerSQL Serverneu.Restart the instance of SQL ServerSQL Server. Führen Sie dazu z. B. NET START MSSQLSERVERaus.For example, run NET START MSSQLSERVER.

  8. Überprüfen Sie die Dateiänderung durch Ausführen der folgenden Abfrage.Verify the file change by running the following query.

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

Verschieben der master-DatenbankMoving the master Database

Führen Sie die folgenden Schritte aus, um die master-Datenbank zu verschieben.To move the master database, follow these steps.

  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.From the Start menu, point to All Programs, point to Microsoft SQL Server, point to Configuration Tools, and then click SQL Server Configuration Manager.

  2. Klicken Sie im Knoten SQL Server-Dienste mit der rechten Maustaste auf die Instanz von SQL ServerSQL Server (z. B. SQL Server (MSSQLSERVER) ), und wählen Sie Eigenschaftenaus.In the SQL Server Services node, right-click the instance of SQL ServerSQL Server (for example, SQL Server (MSSQLSERVER)) and choose Properties.

  3. Klicken Sie im Dialogfeld Eigenschaften von SQL Server ( Instanzname ) auf die Registerkarte Startparameter .In the SQL Server (instance_name) Properties dialog box, click the Startup Parameters tab.

  4. Wählen Sie im Feld Vorhandene Parameter den Parameter „-d“aus, um die Masterdatendatei zu verschieben.In the Existing parameters box, select the -d parameter to move the master data file. Klicken Sie auf Aktualisieren , um die Änderung zu speichern.Click Update to save the change.

    Ändern Sie im Feld Startparameter angeben den Parameter in den neuen Pfad der Masterdatenbank.In the Specify a startup parameter box, change the parameter to the new path of the master database.

  5. Wählen Sie im Feld Vorhandene Parameter den Parameter „-l“aus, um die Masterprotokolldatei zu verschieben.In the Existing parameters box, select the -l parameter to move the master log file. Klicken Sie auf Aktualisieren , um die Änderung zu speichern.Click Update to save the change.

    Ändern Sie im Feld Startparameter angeben den Parameter in den neuen Pfad der Masterdatenbank.In the Specify a startup parameter box, change the parameter to the new path of the master database.

    Der Parameterwert der Datendatei muss dem -d -Parameter und der Wert der Protokolldatei muss dem -l -Parameter entsprechen.The parameter value for the data file must follow the -d parameter and the value for the log file must follow the -l parameter. Im folgenden Beispiel werden die Parameterwerte für den Standardspeicherort der Masterdatendatei dargestellt.The following example shows the parameter values for the default location of the master data file.

    -dC:\Program Files\Microsoft SQL Server\MSSQL<version>.MSSQLSERVER\MSSQL\DATA\master.mdf

    -lC:\Program Files\Microsoft SQL Server\MSSQL<version>.MSSQLSERVER\MSSQL\DATA\mastlog.ldf

    Wenn der geplante Speicherort für das Verschieben der Masterdatendatei E:\SQLDatalautet, werden die Parameterwerte folgendermaßen geändert:If the planned relocation for the master data file is E:\SQLData, the parameter values would be changed as follows:

    -dE:\SQLData\master.mdf

    -lE:\SQLData\mastlog.ldf

  6. Beenden Sie die Instanz von SQL ServerSQL Server , indem Sie mit der rechten Maustaste auf den Instanznamen klicken und Beendenauswählen.Stop the instance of SQL ServerSQL Server by right-clicking the instance name and choosing Stop.

  7. Verschieben Sie die Dateien master.mdf und mastlog.ldf an den neuen Speicherort.Move the master.mdf and mastlog.ldf files to the new location.

  8. Starten Sie die Instanz von SQL ServerSQL Server neu.Restart the instance of SQL ServerSQL Server.

  9. Überprüfen Sie die Dateiänderung für die master-Datenbank, indem Sie die folgende Abfrage ausführen.Verify the file change for the master database by running the following query.

    SELECT name, physical_name AS CurrentLocation, state_desc  
    FROM sys.master_files  
    WHERE database_id = DB_ID('master');  
    GO  
    
  10. An diesem Punkt sollte SQL Server normal ausgeführt werden.At this point SQL Server should run normally. Microsoft empfiehlt jedoch, auch den Registrierungseintrag unter HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\instance_ID\Setupanzupassen, wobei instance_ID MSSQL13.MSSQLSERVERentspricht.However Microsoft recommends also adjusting the registry entry at HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\instance_ID\Setup, where instance_ID is like MSSQL13.MSSQLSERVER. Ändern Sie in dieser Struktur den Wert von SQLDataRoot in den neuen Pfad.In that hive, change the SQLDataRoot value to the new path. Wenn Sie es versäumen, die Registrierung zu aktualisieren, können Fehler bei Patches und Upgrades auftreten.Failure to update the registry can cause patching and upgrading to fail.

Verschieben der RessourcendatenbankMoving the Resource Database

Der Speicherort der Ressourcendatenbank lautet <Laufwerk>:\Programme\Microsoft SQL Server\MSSQL<Version>.<instance_name>\MSSQL\Binn\.The location of the Resource database is <drive>:\Program Files\Microsoft SQL Server\MSSQL<version>.<instance_name>\MSSQL\Binn\. Die Datenbank kann nicht verschoben werden.The database cannot be moved.

Anschlussaufgaben: Nach dem Verschieben aller SystemdatenbankenFollow-up: After Moving All System Databases

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.If you have moved all of the system databases to a new drive or volume or to another server with a different drive letter, make the following updates.

  • Ändern Sie den Pfad des SQL Server-Agent-Protokolls.Change the SQL Server Agent log path. Wenn Sie diesen Pfad nicht aktualisieren, kann SQL Server-Agent nicht gestartet werden.If you do not update this path, SQL Server Agent will fail to start.

  • Ändern Sie den Standardspeicherort der Datenbank.Change the database default location. Beim Erstellen einer neuen Datenbank kann ein Fehler auftreten, wenn der als Standardspeicherort angegebene Laufwerkbuchstabe und Pfad nicht vorhanden ist.Creating a new database may fail if the drive letter and path specified as the default location do not exist.

Ändern des Pfads des SQL Server-Agent-ProtokollsChange the SQL Server Agent Log Path

  1. Erweitern Sie in SQL Server Management Studio im Objekt-Explorer SQL Server-Agent.From SQL Server Management Studio, in Object Explorer, expand SQL Server Agent.

  2. Klicken Sie mit der rechten Maustaste auf Fehlerprotokolle , und klicken Sie auf Konfigurieren.Right-click Error Logs and click Configure.

  3. Geben Sie im Dialogfeld Fehlerprotokolle des SQL Server-Agents konfigurieren den neuen Speicherort der Datei SQLAGENT.OUT an.In the Configure SQL Server Agent Error Logs dialog box, specify the new location of the SQLAGENT.OUT file. Der Standardspeicherort ist C:\Programme\Microsoft SQL Server\MSSQL<version>.<instance_name>\MSSQL\Log\.The default location is C:\Program Files\Microsoft SQL Server\MSSQL<version>.<instance_name>\MSSQL\Log\.

Ändern des Standardspeicherorts der DatenbankChange the database default location

  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.From SQL Server Management Studio, in Object Explorer, right-click the SQL Server server and click Properties.

  2. Wählen Sie im Dialogfeld Servereigenschaften die Option Datenbankeinstellungenaus.In the Server Properties dialog box, select Database Settings.

  3. Wechseln Sie unter Standardspeicherorte für Datenbankzum neuen Speicherort sowohl für die Daten- als auch die Protokolldatei.Under Database Default Locations, browse to the new location for both the data and log files.

  4. Starten und beenden Sie den SQL Server-Dienst, um die Änderung abzuschließen.Stop and start the SQL Server service to complete the change.

BeispieleExamples

A.A. Verschieben der tempdb-DatenbankMoving the tempdb database

Im folgenden Beispiel werden die tempdb -Daten- und Protokolldatei im Rahmen einer geplanten Verschiebung an einen neuen Speicherort verschoben.The following example moves the tempdb data and log files to a new location as part of a planned relocation.

Hinweis

Da tempdb jedes Mal neu erstellt wird, wenn die Instanz von SQL ServerSQL Server gestartet wird, müssen die Daten- und Protokolldateien nicht physisch verschoben werden.Because tempdb is re-created each time the instance of SQL ServerSQL Server is started, you do not have to physically move the data and log files. Die Dateien werden am neuen Speicherort erstellt, sobald der Dienst in Schritt 3 neu gestartet wird.The files are created in the new location when the service is restarted in step 3. Bis der Dienst neu gestartet wird, verwendet tempdb weiterhin die Daten und die Protokolldateien des vorhandenen Speicherorts.Until the service is restarted, tempdb continues to use the data and log files in existing location.

  1. Ermitteln Sie die logischen Dateinamen der tempdb -Datenbank und ihren aktuellen Speicherort auf dem Datenträger.Determine the logical file names of the tempdb database and their current location on the disk.

    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.Change the location of each file by using 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 ServerSQL Server, und starten Sie sie erneut.Stop and restart the instance of SQL ServerSQL Server.

  4. Überprüfen Sie die Dateiänderung.Verify the file change.

    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.Delete the tempdb.mdf and templog.ldf files from the original location.

Weitere InformationenSee Also

Ressourcendatenbank Resource Database
tempdb-Datenbank tempdb Database
master-Datenbank master Database
msdb-Datenbank msdb Database
model-Datenbank model Database
Verschieben von Benutzerdatenbanken Move User Databases
Verschieben von Datenbankdateien Move Database Files
Starten, Beenden, Anhalten, Fortsetzen und Neustarten der Datenbank-Engine, SQL Server-Agent oder des SQL Server-Browsers Start, Stop, Pause, Resume, Restart the Database Engine, SQL Server Agent, or SQL Server Browser Service
ALTER DATABASE (Transact-SQL) ALTER DATABASE (Transact-SQL)
Neuerstellen von SystemdatenbankenRebuild System Databases