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

Gilt für:SQL Server

In diesem Thema wird beschrieben, wie Sie eine getrennte Datenbank an einen anderen Speicherort verschieben und sie erneut an dieselbe oder eine andere Serverinstanz in SQL Server anfügen. Es wird jedoch 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 Move User Databases.

Wichtig

Vom Anfügen oder Wiederherstellen von Datenbanken aus unbekannten oder nicht vertrauenswürdigen Quellen wird abgeraten. Solche Datenbanken können schädlichen Code enthalten, der möglicherweise unbeabsichtigten Transact-SQL -Code ausführt oder Fehler verursacht, indem er das Schema oder die physische Datenbankstruktur ändert. Bevor Sie eine Datenbank aus einer unbekannten oder nicht vertrauenswürdigen Quelle verwenden, führen Sie auf einem Nichtproduktionsserver DBCC CHECKDB für die Datenbank aus. Überprüfen Sie außerdem den Code in der Datenbank, z.B. gespeicherte Prozeduren oder anderen benutzerdefinierten Code.

Prozedur

So verschieben Sie eine Datenbank durch Trennen und Anfügen

  1. Trennen Sie die Datenbank. Weitere Informationen finden Sie unter Trennen einer Datenbank.

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

    Sie sollten die Protokolldateien verschieben, selbst wenn Sie neue Protokolldateien erstellen möchten. In manchen Fällen sind zum erneuten Anfügen der Datenbank die vorhandenen Protokolldateien erforderlich. Deshalb sollten Sie immer alle getrennten Protokolldateien behalten, bis die Datenbank ohne sie erfolgreich angefügt wurde.

    Hinweis

    Wenn Sie versuchen, die Datenbank ohne Angabe der Protokolldatei anzufügen, wird die Protokolldatei an ihrem ursprünglichen Speicherort gesucht. Falls noch eine Kopie der Protokolldatei im ursprünglichen Speicherort vorhanden ist, wird diese Kopie angefügt. Wenn Sie die Verwendung der ursprünglichen Protokolldatei verhindern möchten, geben Sie entweder den Pfad der neuen Protokolldatei an, oder entfernen Sie die ursprüngliche Kopie der Protokolldatei (nachdem Sie sie an einen neuen Speicherort kopiert haben).

  3. Fügen Sie die kopierten Dateien an. Weitere Informationen finden Sie unter Attach a Database.

Beispiel

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

  1. Trennen Sie die AdventureWorks2022-Datenbank, indem Sie die folgenden Transact-SQL-Anweisungen ausführen:

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

    Wichtig

    Platzieren Sie Datenbank und Transaktionsprotokoll bei einer Produktionsdatenbank 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 Remotespeicherorts. Ein UNC-Name hat das Format \\Servername\Sharename\Path\Filename. Wie beim Schreiben von Dateien auf die lokale Festplatte müssen die entsprechenden Berechtigungen, die zum Lesen oder Schreiben in eine Datei auf dem Remotedatenträger erforderlich sind, dem Benutzerkonto gewährt werden, das von der SQL Server-Instanz verwendet wird.

  3. Fügen Sie die verschobene Datenbank und optional ihr Protokoll an, indem Sie die folgenden Transact-SQL-Anweisungen ausführen:

    USE master;  
    GO  
    CREATE DATABASE MyAdventureWorks   
        ON (FILENAME = 'C:\MySQLServer\AdventureWorks2022_Data.mdf'),  
        (FILENAME = 'C:\MySQLServer\AdventureWorks2022_Log.ldf')  
        FOR ATTACH;  
    GO  
    

    In SQL Server Management Studio ist eine neu angefügte Datenbank im Objekt-Explorer nicht sofort 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.

Weitere Informationen

Datenbanktrennzeichen und Anfügen (SQL Server)