Vorgehensweise: Verschieben einer Datenbank durch Trennen und Anfügen (Transact-SQL)

ms187858.note(de-de,SQL.90).gifWichtig:
Es wird empfohlen, Datenbanken mit der ALTER DATABASE-Prozedur für geplante Verschiebungen zu verschieben, anstatt die Optionen zum Trennen und Anfügen zu verwenden. Weitere Informationen finden Sie unter ALTER DATABASE (Transact-SQL).

Eine getrennte Datenbank kann an einen anderen Speicherort verschoben und an die gleiche oder eine andere Serverinstanz angefügt werden.

ms187858.security(de-de,SQL.90).gifSicherheitshinweis:
Es empfiehlt sich nicht, Datenbanken aus unbekannten oder nicht vertrauenswürdigen Quellen anzufügen oder wiederherzustellen. Solche Datenbanken können bösartigen Code enthalten, mit dem unbeabsichtigter Transact-SQL-Code ausgeführt oder Fehler verursacht werden können, indem das Schema oder die physikalische Datenbankstruktur geändert wird. Bevor Sie eine Datenbank aus einer unbekannten oder nicht vertrauenswürdigen Quelle verwenden, führen Sie in der Datenbank auf einem Nichtproduktionsserver DBCC CHECKDB aus, und überprüfen Sie auch den Code in der Datenbank, z. B. gespeicherte Prozeduren oder anderen benutzerdefinierten Code.

In Microsoft SQL Server 2005 wurde die gespeicherte Prozedur sp_detach_db erweitert. Die Volltextindexdateien einer Datenbank werden nicht gelöscht, wenn die Datenbank getrennt wird. Weitere Informationen finden Sie unter Anfügen und Trennen von Volltextkatalogen.

ms187858.note(de-de,SQL.90).gifHinweis:
Mit dem Trennen und Anfügen können Sie auch eine Datenbank aus SQL Server, Version 7.0, oder SQL Server 2000 auf SQL Server 2005 aktualisieren. Weitere Informationen finden Sie unter Vorgehensweise: Aktualisieren einer Datenbank durch Trennen und Anfügen (Transact-SQL).

Prozedur

So kopieren Sie eine Datenbank mit den Optionen zum Trennen und Anfügen

  1. Trennen Sie die Datenbank mithilfe der gespeicherten Prozedur sp_detach_db.

  2. Verschieben Sie die getrennten Datenbankdateien und Protokolldateien im Windows-Explorer oder an der Windows-Eingabeaufforderung an den neuen Speicherort.

    ms187858.note(de-de,SQL.90).gifHinweis:
    Um eine Datenbank mit nur einer Datei zu verschieben, können Sie E-Mail verwenden, falls die Datei nicht allzu groß ist.

    Sie sollten die Protokolldateien verschieben, selbst wenn Sie neue Protokolldateien erstellen möchten. In einigen Fällen sind für das erneute Anfügen einer Datenbank die vorhandenen Protokolldateien erforderlich. Deshalb sollten Sie immer alle getrennten Protokolldateien behalten, bis die Datenbank ohne sie erfolgreich angefügt wurde.

    ms187858.note(de-de,SQL.90).gifHinweis:
    Wenn Sie versuchen, die Datenbank anzufügen, ohne die Protokolldatei anzugeben, wird beim Anfügen die Protokolldatei im ursprünglichen Speicherort gesucht. Falls noch eine Kopie der Protokolldatei im ursprünglichen Speicherort vorhanden ist, wird diese Kopie angefügt. Um die Verwendung der ursprünglichen Protokolldatei zu vermeiden, geben Sie den Pfad der neuen Protokolldatei an, oder entfernen Sie die ursprüngliche Kopie der Protokolldatei (nachdem Sie sie an den neuen Speicherort kopiert haben).
  3. Fügen Sie die kopierten Dateien mithilfe der CREATE DATABASE-Anweisung von Transact-SQL und der FOR ATTACH [ WITH <service_broker_option> ]-Klausel oder einer FOR ATTACH_REBUILD_LOG-Klausel an (weitere Informationen finden Sie unter CREATE DATABASE (Transact-SQL)). Jede Datenbank enthält einen eindeutigen Bezeichner zum Weiterleiten von Service Broker-Nachrichten an diese Datenbank. Falls die Datenbank Service Broker verwendet, finden Sie weitere Informationen unter Verwalten von Service Broker-Identitäten.

    ms187858.note(de-de,SQL.90).gifHinweis:
    Informationen zum Anfügen einer Datenbank mithilfe des Objekt-Explorers finden Sie unter Vorgehensweise: Anfügen einer Datenbank (SQL Server Management Studio).

Beispiel

Im folgenden Beispiel wird eine Kopie der AdventureWorks-Datenbank mit dem Namen MyAdventureWorks erstellt. Die Transact-SQL-Anweisungen werden in einem Abfrage-Editorfenster ausgeführt, das mit der Serverinstanz verbunden ist, an die AdventureWorks angefügt ist.

  1. Führen Sie die folgenden Transact-SQL-Anweisungen aus, um die AdventureWorks-Datenbank zu trennen:

    USE master;
    GO
    EXEC sp_detach_db @dbname = N'AdventureWorks';
    GO
    
  2. Verwenden Sie die gewünschte Methode, und kopieren Sie die Datenbankdateien (AdventureWorks_Data.mdf und AdventureWorks_log) nach C:\MySQLServer\AdventureWorks_Data.mdf bzw. C:\MySQLServer\AdventureWorks_Log.ldf.

    ms187858.note(de-de,SQL.90).gifWichtig:
    Speichern Sie für eine Produktionsdatenbank die Datenbank und das Transaktionsprotokoll auf separaten Datenträgern.

    Um Dateien im Netzwerk auf einen Datenträger auf einem Remotecomputer zu kopieren, verwenden Sie den UNC-Namen (Universal Naming Convention) des Remotespeicherortes. Ein UNC-Name hat das Format **\\Servername\Sharename\Path\**Filename. Wie beim Schreiben von Dateien auf die lokale Festplatte müssen die entsprechenden Berechtigungen für das Lesen oder Schreiben einer Datei auf der Remotefestplatte dem von der SQL Server-Instanz verwendeten Benutzerkonto erteilt werden.

  3. Führen Sie die folgenden Transact-SQL-Anweisungen aus, um die verschobene Datenbank und optional das zugehörige Protokoll anzufügen:

    USE master;
    GO
    CREATE DATABASE MyAdventureWorks 
        ON (FILENAME = 'C:\MySQLServer\AdventureWorks_Data.mdf'),
        (FILENAME = 'C:\MySQLServer\AdventureWorks_Log.ldf')
        FOR ATTACH;
    GO
    
    ms187858.note(de-de,SQL.90).gifHinweis:
    In SQL Server Management Studio ist eine neu angefügte Datenbank nicht sofort im Objekt-Explorer sichtbar. Um die Datenbank anzuzeigen, klicken Sie im Objekt-Explorer im Menü Ansicht auf Aktualisieren. Wenn der Datenbanken-Knoten im Objekt-Explorer erweitert wird, wird nun die neu angefügte Datenbank in der Liste der Datenbanken angezeigt.

Siehe auch

Konzepte

Trennen und Anfügen von Datenbanken

Hilfe und Informationen

Informationsquellen für SQL Server 2005