SQL Server-Datenbanken mithilfe von Detach/Attach an einen neuen Speicherort verschieben

SPRACHE AUSWÄHLEN SPRACHE AUSWÄHLEN
Artikel-ID: 224071 - Produkte anzeigen, auf die sich dieser Artikel bezieht
Dieser Artikel wurde zuvor veröffentlicht unter D224071
Dieser Artikel ist eine Übersetzung des folgenden englischsprachigen Artikels der Microsoft Knowledge Base:
224071 How to move SQL Server databases to a new location by using Detach and Attach functions in SQL Server
Bitte beachten Sie: Bei diesem Artikel handelt es sich um eine Übersetzung aus dem Englischen. Es ist möglich, dass nachträgliche Änderungen bzw. Ergänzungen im englischen Originalartikel in dieser Übersetzung nicht berücksichtigt sind. Die in diesem Artikel enthaltenen Informationen basieren auf der/den englischsprachigen Produktversion(en). Die Richtigkeit dieser Informationen in Zusammenhang mit anderssprachigen Produktversionen wurde im Rahmen dieser Übersetzung nicht getestet. Microsoft stellt diese Informationen ohne Gewähr für Richtigkeit bzw. Funktionalität zur Verfügung und übernimmt auch keine Gewährleistung bezüglich der Vollständigkeit oder Richtigkeit der Übersetzung.
Alles erweitern | Alles schließen

Auf dieser Seite

Zusammenfassung

In diesem Artikel wird beschrieben, wie der Speicherort der Daten- und Protokolldateien für eine beliebige Microsoft SQL Server 2005-, SQL Server 2000- oder SQL Server 7.0-Datenbank geändert werden kann.

Weitere Informationen zum Verschieben von Systemdatenbanken in SQL Server 2005 finden Sie im Thema "Verschieben von Systemdatenbanken" in der Onlinedokumentation zu SQL Server. Besuchen Sie die folgende MSDN-Website (Microsoft Developer Network), um dieses Thema anzuzeigen:
http://msdn2.microsoft.com/de-de/library/ms345408.aspx

Weitere Informationen

Bei einigen SQL Server-Systemdatenbanken sind die Schritte zur Änderung des Speicherorts anders als bei Benutzerdatenbanken. Diese Sonderfälle werden separat beschrieben.

Hinweis: SQL Server 7.0-Systemdatenbanken sind mit SQL Server 2000 nicht kompatibel. Fügen Sie keine master-, model-, msdb- oder Verteilungsdatenbanken von SQL Server 7.0 zu SQL Server 2000 hinzu. Wenn Sie SQL Server 2005 verwenden, können Sie nur SQL Server 2005-Datenbanken an eine Instanz anfügen. In den Beispielen in diesem Artikel wird SQL Server im Ordner "D:\Mssql7" installiert. Außerdem wird in den Beispielen davon ausgegangen, dass sich alle Daten- und Protokolldateien in dem Standardordner "D:\Mssql7\Data" befinden. In den Beispielen werden die Daten- und Protokolldateien für alle Datenbanken in den Ordner "E:\Sqldata" verschoben.

Voraussetzungen

  • Erstellen Sie eine aktuelle Sicherungskopie aller Datenbanken von ihrem aktuellen Speicherort, insbesondere der master-Datenbank.
  • Sie müssen über Systemadministratorrechte (sa) verfügen.
  • Sie müssen den Namen und den aktuellen Speicherort aller Daten- und Protokolldateien für die Datenbank kennen.

    Hinweis: Sie können den Namen und den aktuellen Speicherort aller von einer Datenbank verwendeten Dateien unter Verwendung der gespeicherten Prozedur sp_helpfile ermitteln:
    use <database_name>
    go
    sp_helpfile
    go
  • Sie sollten exklusiven Zugriff auf die Datenbank haben, die verschoben werden soll. Wenn während der Prozedur Probleme auftreten und es nicht möglich ist, auf die verschobene Datenbank zuzugreifen oder SQL Server zu starten, überprüfen Sie das SQL Server-Fehlerprotokoll, und suchen Sie in der SQL Server-Onlinedokumentation nach näheren Informationen zu den aufgetretenen Fehlern.

Verschieben von Benutzerdatenbanken

Im folgenden Beispiel wird eine Datenbank namens mydb verschoben. Diese Datenbank enthält eine Datendatei "Mydb.mdf" sowie eine Protokolldatei "Mydblog.ldf". Wenn die von Ihnen verschobene Datenbank weitere Daten- oder Protokolldateien enthält, geben Sie alle Dateien in der gespeicherten Prozedur sp_attach_db in einer durch Trennzeichen getrennten Liste an. Die Prozedur sp_detach_db bleibt unabhängig von der Anzahl der in der Datenbank enthaltenen Dateien immer gleich, da diese darin nicht aufgelistet werden.
  1. Trennen Sie die Datenbank wie folgt:
    use master
       go
       sp_detach_db 'mydb'
       go
  2. Kopieren Sie als Nächstes die Daten- und Protokolldateien vom aktuellen Speicherort (D:\Mssql7\Data) an den neuen Speicherort (E:\Sqldata).
  3. Fügen Sie die Datenbank wieder an. Zeigen Sie wie folgt auf die Dateien an dem neuen Speicherort:
    use master   go   sp_attach_db 'mydb','E:\Sqldata\mydbdata.mdf','E:\Sqldata\mydblog.ldf'   go
    Überprüfen Sie mithilfe der gespeicherten Prozedur sp_helpfile die Änderung der Dateispeicherorte:
    use mydb    go    sp_helpfile    go
    Die Werte in der Spalte Dateiname sollten die neuen Speicherorte wiedergeben.
Hinweis: Artikel 922804 der Microsoft Knowledge Base beschreibt ein Problem bei SQL Server 2005-Datenbanken in einem Speicher, der an ein Netzwerk angeschlossen ist. Weitere Informationen finden Sie im folgenden Artikel der Microsoft Knowledge Base:
922804 Update: nachdem Sie eine Microsoft SQL Server 2005-Datenbank trennen, die sich auf an das Netzwerk angeschlossenem Speicher befindet, können Sie die SQL Server-Datenbank nicht erneut anfügen
Berücksichtigen Sie dieses Problem. Berücksichtigen Sie außerdem die Berechtigungen, die auf eine Datenbank angewendet werden, wenn sie in SQL Server 2005 getrennt wird. Weitere Informationen finden Sie unter dem Thema "Sichern von Daten- und Protokolldateien" im Abschnitt "Trennen und Anfügen einer Datenbank" in der Onlinedokumentation zu SQL Server. Besuchen Sie die folgende MSDN-Website (Microsoft Developer Network), um dieses Thema anzuzeigen:
http://msdn2.microsoft.com/de-de/library/ms189128.aspx

Verschieben von Beispieldatenbanken

Wenn Sie die Beispieldatenbanken "Pubs" und "Northwind" (SQL Server 2000 bzw. SQL Server 7.0) oder "AdventureWorks" und "AdventureWorksDW" (SQL Server 2005) verschieben möchten, gehen Sie genauso vor wie beim Verschieben von Benutzerdatenbanken.

Verschieben der model-Datenbank

SQL Server 7.0

  1. Stellen Sie sicher, dass SQL Server Agent derzeit nicht ausgeführt wird.
  2. Verwenden Sie die gleiche Vorgehensweise wie beim Verschieben von Benutzerdatenbanken.

SQL Server 2005 und SQL Server 2000

In SQL Server 2000 und SQL Server 2005 können Systemdatenbanken nicht unter Verwendung der gespeicherten Prozedur sp_detach_db getrennt werden. Bei der Ausführung der Anweisung sp_detach_db 'model' wird die folgende Fehlermeldung angezeigt:
Server: Msg 7940, Ebene 16, Status 1, Zeile 1
Systemdatenbanken master, model, msdb und tempdb können nicht getrennt werden.
Zum Verschieben der model-Datenbank müssen Sie SQL Server mit der Option -c, der Option -m und dem Ablaufverfolgungsflag 3608 starten, damit SQL Server keine Datenbank außer der master-Datenbank wiederherstellt.

Hinweis: Ab diesem Zeitpunkt haben Sie keinerlei Zugriff auf Benutzerdatenbanken. Sie dürfen während der Verwendung dieses Ablaufverfolgungsflags keine Aktionen außer den unten genannten Schritten ausführen. Gehen Sie folgendermaßen vor, um das Ablaufverfolgungsflag 3608 als SQL Server-Startparameter hinzuzufügen:
  1. Klicken Sie im SQL Enterprise Manager mit der rechten Maustaste auf den Servernamen. Klicken Sie dann auf Eigenschaften.
  2. Klicken Sie auf der Registerkarte Allgemein auf Startparameter.
  3. Fügen Sie den folgenden neuen Parameter hinzu:
    -c -m -T3608
Wenn Sie mit SQL Server 2005 arbeiten, können Sie die Startparameter des SQL Server-Dienstes mit dem SQL Server-Konfigurations-Manager ändern. Weitere Informationen dazu, wie Sie die Startparameter ändern können, finden Sie auf folgender MSDN-Website (Microsoft Developer Network):
http://msdn2.microsoft.com/de-de/library/ms190737.aspx
Gehen Sie nach dem Hinzufügen der Option -c, der Option -m und des Ablaufverfolgungsflags 3608 folgendermaßen vor:
  1. Beenden Sie SQL Server, und starten Sie ihn neu.
  2. Trennen Sie die model-Datenbank mit den folgenden Befehlen:
    use master
       go
       sp_detach_db 'model'
       go
  3. Verschieben Sie die Dateien "Model.mdf" und "Modellog.ldf" aus dem Ordner "D:\Mssql7\Data" in den Ordner "E:\Sqldata".
  4. Fügen Sie die model-Datenbank mit den folgenden Befehlen wieder an:
    use master
       go
       sp_attach_db 'model','E:\Sqldata\model.mdf','E:\Sqldata\modellog.ldf'
       go
  5. Entfernen Sie -c -m -T3608 in SQL Server Enterprise Manager oder im SQL Server-Konfigurations-Manager aus den Startparametern.
  6. Beenden Sie SQL Server, und starten Sie ihn neu. Sie können die Änderung der Speicherorte mit der gespeicherten Prozedur sp_helpfile überprüfen. Verwenden Sie beispielsweise den folgenden Befehl:
    use model
       go
       sp_helpfile
       go

Verschieben der MSDB-Datenbank

SQL Server 7.0

Hinweis: Wenn Sie diese Vorgehensweise zum Verschieben der msdb- und model-Datenbank verwenden, müssen Sie zuerst die model-Datenbank wieder anfügen und dann die msdb-Datenbank wieder anfügen. Gehen Sie folgendermaßen vor:
  1. Stellen Sie sicher, dass SQL Server Agent derzeit nicht ausgeführt wird.
  2. Verwenden Sie die gleiche Vorgehensweise wie beim Verschieben von Benutzerdatenbanken.
Hinweis: Wenn SQL Server Agent ausgeführt wird, schlägt die gespeicherte Prozedur sp_detach_db mit folgender Meldung fehl:
Server: Msg 3702, Ebene 16, Status 1, Zeile 0
Datenbank 'msdb' kann nicht gelöscht werden, da derzeit in Verwendung.
DBCC-Ausführung abgeschlossen. Falls DBCC Fehlermeldungen ausgegeben hat, wenden Sie sich an den Systemadministrator.

SQL Server 2005 und SQL Server 2000

Zum Verschieben der msdb-Datenbank müssen Sie SQL Server mit der Option -c, der Option -m und dem Ablaufverfolgungsflag 3608 starten, damit SQL Server keine Datenbank außer der master-Datenbank wiederherstellt. Führen Sie die im Abschnitt "Verschieben der model-Datenbank" beschriebenen Schritte durch, um die Option -c, die Option -m und das Ablaufverfolgungsflag 3608 hinzuzufügen. Gehen Sie nach dem Hinzufügen der Option -c, der Option -m und des Ablaufverfolgungsflags 3608 folgendermaßen vor:
  1. Beenden Sie SQL Server, und starten Sie ihn neu.
  2. Stellen Sie sicher, dass SQL Server Agent derzeit nicht ausgeführt wird.
  3. Trennen Sie die msdb-Datenbank wie folgt:
    use master
    go
    sp_detach_db 'msdb'
    go
  4. Verschieben Sie die Dateien "Msdbdata.mdf" und "Msdblog.ldf" vom aktuellen Speicherort (D:\Mssql8\Data) zum neuen Speicherort (E:\Mssql8\Data).
  5. Entfernen Sie im Enterprise Manager das Ablaufverfolgungsflag -c -m -T3608 aus dem Feld Startparameter.
  6. Beenden Sie SQL Server, und starten Sie das Programm erneut.

    Hinweis: Wenn Sie versuchen, die msdb-Datenbank durch Starten von SQL Server mit der Option -c, der Option-m oder dem Ablaufverfolgungsflag 3608 wieder anzufügen, kann folgende Fehlermeldung angezeigt werden:
    Server: Msg 615, Ebene 21, Status 1, Zeile 1
    Datenbanktabellen-ID 3, Name 'model' konnte nicht gefunden werden.
  7. Fügen Sie die msdb-Datenbank wie folgt wieder an:
    use master
    go 
    sp_attach_db 'msdb','E:\Mssql8\Data\msdbdata.mdf','E:\Mssql8\Data\msdblog.ldf' 
    go
Hinweis: Wenn Sie diese Vorgehensweise in Verbindung mit dem Verschieben der model-Datenbank verwenden, versuchen Sie, die msdb-Datenbank zu trennen, während Sie die model-Datenbank trennen. In diesem Fall muss die model-Datenbank zuerst und die msdb-Datenbank danach wieder angefügt werden. Wenn Sie die msdb-Datenbank zuerst anfügen, wird beim Versuch, die model-Datenbank wieder anzufügen, die folgende Fehlermeldung angezeigt:
Msg 0, Ebene 11, Status 0, Zeile 0
Für den aktuellen Befehl ist ein schwerwiegender Fehler aufgetreten. Löschen Sie eventuelle Ergebnisse.
In diesem Fall müssen Sie die msdb-Datenbank trennen, die model-Datenbank wieder anfügen und dann die msdb-Datenbank wieder anfügen.

Nachdem Sie die MSDB-Datenbank verschoben haben, wird möglicherweise die folgende Fehlermeldung angezeigt:
Fehler 229: Die EXECUTE-Berechtigung wurde für das Objekt 'Objektname', Datenbank 'master', Besitzer 'dbo' verweigert.
Dieses Problem tritt auf, da die Benutzerrechtekette gebrochen wurde. Die msdb-Datenbank und die master-Datenbank haben unterschiedliche Datenbankbesitzer. In diesem Fall wurden die Besitzrechte für die msdb-Datenbank geändert. Führen Sie die folgenden Transact-SQL-Anweisungen aus, um dieses Problem zu umgehen. Dazu können Sie das Befehlszeilenprogramm "Osql.exe" (SQL Server 7.0 und SQL Server 2000) oder das Befehlszeilenprogramm "Sqlcmd.exe" (SQL Server 2005) verwenden:
USE MSDB 
Go 
EXEC sp_changedbowner 'sa' 
Go
Weitere Informationen finden Sie im folgenden Artikel der Microsoft Knowledge Base:
272424 INF: für Datenbanken überprüfen Objektbesitzkette hängt von der Anmeldung ab, die den Objektbesitzern zugeordnet wird

Verschieben der master-Datenbank

  1. Ändern Sie in SQL Server Enterprise Manager den Pfad für die master-Datendateien und die master-Protokolldateien.

    Hinweis: Sie können den Speicherort des Fehlerprotokolls hier ebenfalls ändern.
  2. Klicken Sie mit der rechten Maustaste im Enterprise Manager auf den SQL Server, und klicken Sie auf Eigenschaften.
  3. Klicken Sie auf Startparameter. Es werden folgende Einträge angezeigt:
    -dD:\MSSQL7\data\master.mdf -eD:\MSSQL7\log\ErrorLog -lD:\MSSQL7\data\mastlog.ldf
    -d ist der vollständige Pfad für die Datendatei der master-Datenbank.

    -e ist der vollständige Pfad für die Fehlerprotokolldatei.

    -l ist der vollständige Pfad für die Protokolldatei der master-Datenbank.
  4. Ändern Sie diese Werte wie folgt:
    1. Löschen Sie die aktuellen Einträge für die Dateien "Master.mdf" und "Mastlog.ldf".
    2. Fügen Sie neue Einträge hinzu, die den neuen Speicherort angeben:
      -dE:\SQLDATA\master.mdf
            -lE:\SQLDATA\mastlog.ldf
  5. Beenden Sie SQL Server.
  6. Kopieren Sie die Dateien "Master.mdf" und "Mastlog.ldf" an den neuen Speicherort (E:\Sqldata).
  7. Starten Sie SQL Server neu.
Hinweis: Wenn Sie mit SQL Server 2005 arbeiten, verwenden Sie den SQL Server-Konfigurations-Manager, um den Pfad für die master-Datendateien und die master-Protokolldateien zu ändern.

Verschieben der tempdb-Datenbank

Mithilfe der ALTER DATABASE-Anweisung können Sie die tempdb-Dateien verschieben.
  1. Bestimmen Sie mithilfe von sp_helpfile die logischen Dateinamen für die tempdb-Datenbank wie folgt:
    use tempdb go sp_helpfile go
    Der logische Name für jede Datei ist in der Spalte Name enthalten. In diesem Beispiel werden die Standarddateinamen tempdev und templog verwendet.
  2. Verwenden Sie die ALTER DATABASE-Anweisung, wobei Sie den logischen Dateinamen wie folgt angeben:
    use master go Alter database tempdb modify file (name = tempdev, filename = 'E:\Sqldata\tempdb.mdf') go Alter database tempdb modify file (name = templog, filename = 'E:\Sqldata\templog.ldf') go
    Die erfolgreiche Änderung wird durch folgende Meldungen bestätigt:
    Meldung 1
    Datei 'tempdev' in sysalt geändert. Löschen Sie die alte Datei nach dem Neustart von SQL Server.
    Meldung 2
    Datei 'templog' in sysalt geändert. Löschen Sie die alte Datei nach dem Neustart von SQL Server.
  3. Wenn Sie sp_helpfile in tempdb verwenden, werden diese Änderungen erst bestätigt, nachdem Sie SQL Server neu gestartet haben.
  4. Beenden Sie SQL Server, und starten Sie das Programm neu.

Verschieben der master-Datenbank und der Resource-Datenbank

Weitere Informationen zum Verschieben der master- und der Resource-Datenbank finden Sie auf folgender MSDN-Website (Microsoft Developer Network):
http://msdn2.microsoft.com/de-de/library/ms345408.aspx

Informationsquellen

Weitere Informationen finden Sie in den folgenden Artikeln der Microsoft Knowledge Base:
912397 Wenn Sie in einem Wert, der ungültig ist, einen Startparameter für eine gruppierte Instanz von SQL Server 2000 oder SQL Server 2005 ändern, kann der SQL Server-Dienst nicht gestartet werden
274188 PRB: Problemthema "Behandlung" bei verwaisten Benutzern in Online-Dokumentation ist unvollständig
246133 Übertragen von Benutzernamen und Kennwörtern zwischen Instanzen von SQL-Server
168001 Benutzeranmeldungen und Berechtigungen für eine Datenbank können nach Wiederherstellung der Datenbank falsch sein

Weitere Informationen finden Sie in folgenden Büchern:
Microsoft Corporation
Microsoft SQL Server 7.0 System Administration Training Kit
Microsoft Press, 2001
Microsoft Corporation
MCSE Training Kit: Microsoft SQL Server 2000 System Administration
Microsoft Press, 2001
Microsoft Corporation
Microsoft SQL Server 2000 Resource Kit
Microsoft Press, 2001

Eigenschaften

Artikel-ID: 224071 - Geändert am: Freitag, 12. Juli 2013 - Version: 17.1
Die Informationen in diesem Artikel beziehen sich auf:
  • Microsoft SQL Server 2005 Standard Edition
  • Microsoft SQL Server 2005 Enterprise Edition
  • Microsoft SQL Server 2005 Developer Edition
  • Microsoft SQL Server 2005 Workgroup Edition
  • Microsoft SQL Server 2005 Express Edition
  • Microsoft SQL Server 2000 Standard Edition
  • Microsoft SQL Server 7.0 Standard Edition
Keywords: 
kbsqlssis kbinfo KB224071
Microsoft stellt Ihnen die in der Knowledge Base angebotenen Artikel und Informationen als Service-Leistung zur Verfügung. Microsoft übernimmt keinerlei Gewährleistung dafür, dass die angebotenen Artikel und Informationen auch in Ihrer Einsatzumgebung die erwünschten Ergebnisse erzielen. Die Entscheidung darüber, ob und in welcher Form Sie die angebotenen Artikel und Informationen nutzen, liegt daher allein bei Ihnen. Mit Ausnahme der gesetzlichen Haftung für Vorsatz ist jede Haftung von Microsoft im Zusammenhang mit Ihrer Nutzung dieser Artikel oder Informationen ausgeschlossen.

Ihr Feedback an uns

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com