Anfügen einer Datenbank

Gilt für: SQL Server

In diesem Artikel erfahren Sie, wie Sie eine Datenbank in SQL Server mithilfe von SQL Server Management Studio oder Transact-SQL angeschlossen wird. Sie können diese Funktion verwenden, um eine SQL Server-Datenbank zu kopieren, zu verschieben oder zu aktualisieren.

Einschränkungen

Eine Liste der Einschränkungen finden Sie unter Anfügen und Trennen von Datenbanken (SQL Server).

Voraussetzungen

Überprüfen Sie alle der folgenden Voraussetzungen, bevor Sie fortfahren:

  • Wenn Sie eine Datenbank von einer Instanz in eine andere verschieben, muss die Datenbank zuerst von jeder vorhandenen SQL-Instanz getrennt werden. Wenn Sie versuchen, eine Datenbank anzufügen, die nicht getrennt wurde, wird ein Fehler zurückgegeben. Weitere Informationen finden Sie unter Trennen einer Datenbank.

  • Wenn Sie eine Datenbank anfügen, müssen alle Datendateien für die Datenbank verfügbar sein. Häufig verfügen diese Dateien über die Erweiterungen MDF oder NDF (für Datendateien) und LDF (für Transaktionsprotokolldateien). Darüber hinaus müssen alle Dateigruppen für FILESTREAM-Daten vorhanden und verfügbar sein. Weitere Informationen zum Anfügen einer FILESTREAM-fähigen Datenbank finden Sie unter Verschieben einer FILESTREAM-aktivierten Datenbank.

  • Wenn eine Datendatei einen anderen Pfad als beim Erstellen oder beim letzten Anfügen der Datenbank aufweist, müssen Sie den aktuellen Pfad der Datei angeben.

  • Das Datenbank-Engine-Dienstkonto muss über Berechtigungen zum Lesen der Dateien am neuen Speicherort verfügen.

  • Wenn sich MDF- und LDF-Dateien in unterschiedlichen Verzeichnissen befinden und einer der Pfade \\?\GlobalRoot enthält, tritt beim Versuch, die Datenbank anzufügen, ein Fehler auf.

Ist Anfügen am besten geeignet?

Beim Verschieben von Datenbankdateien innerhalb derselben Instanz wird empfohlen, Datenbanken innerhalb einer Instanz mit der geplanten Prozedur für Verschiebungen (ALTER DATABASE) zu verschieben, anstatt diese zu trennen und wieder anzufügen. Weitere Informationen finden Sie unter Move User Databases.

Es wird nicht empfohlen, das Trennen und Anfügen für die Sicherung und Wiederherstellung zu verwenden. Es sind keine Transaktionsprotokollsicherungen oder Point-in-Time-Wiederherstellungen verfügbar, wenn Dateien getrennt werden, die extern von SQL Server gesichert werden sollen.

Sicherheit

Dateizugriffsberechtigungen werden bei vielen Datenbankvorgängen festgelegt, auch wenn eine Datenbank getrennt und angefügt wird. Wenn eine Datenbank getrennt oder angefügt wird, versucht die Datenbank-Engine, zur Identität des Windows-Kontos der Verbindung zu wechseln, die den Vorgang ausführt, um sicherzustellen, dass das Konto über die Berechtigung für den Zugriff auf die Datenbank und Protokolldateien verfügt. Bei gemischten Sicherheitskonten, die SQL Server-Anmeldungen verwenden, kann beim Identitätswechsel ein Fehler auftreten.

Die folgende Tabelle zeigt die für die Datenbank- und Protokolldateien festgelegten Berechtigungen, nachdem ein Anfüge- oder Trennvorgang abgeschlossen ist, und ob die Datenbank-Engine zur Identität des Kontos wechseln kann, das die Verbindung herstellt.

Vorgang Das Verbinden des Kontos kann als Identitätswechsel erfolgen Dateiberechtigungen werden erteilt an
Trennen Ja Nur das Konto, das die Operation ausführt. Zusätzliche Konten können von Betriebssystemadministrator*innen hinzugefügt werden, wenn sie nach dem Trennen der Datenbank benötigt werden.
Trennen No SQL Server-Dienstkonto (MSSQLSERVER) und Mitglieder der lokalen Windows-Administratorengruppe
Anfügen Ja SQL Server-Dienstkonto (MSSQLSERVER) und Mitglieder der lokalen Windows-Administratorengruppe
Anfügen No SQl Server-Dienstkonto (MSSQLSERVER)

Weitere Informationen zu Dateisystemberechtigungen, die den dienstbezogenen SIDs für den SQL Server-Dienst erteilt werden, finden Sie unter Konfigurieren von Dateisystemberechtigungen für den Datenbank-Engine-Zugriff.

Achtung

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. Weitere Informationen zum Anfügen von Datenbanken sowie Informationen zu Änderungen, die an Metadaten vorgenommen werden, wenn Sie eine Datenbank anfügen, finden Sie unter Anfügen und Trennen von Datenbanken (SQL Server).

Berechtigungen

Erfordert die Berechtigung CREATE DATABASE, CREATE ANY DATABASE oder ALTER ANY DATABASE.

Verwenden von SQL Server Management Studio (SSMS)

Vor dem Verschieben einer Datenbank

Wenn Sie eine Datenbank verschieben, bevor Sie sie von ihrer vorhandenen SQL Server-Instanz trennen, verwenden Sie die Seite Datenbankeigenschaften, um die Dateien zu überprüfen, die der Datenbank und ihren aktuellen Speicherorten zugeordnet sind.

  1. Stellen Sie in SQL Server Management Studio über den Objekt-Explorer eine Verbindung mit der SQL Server-Datenbank-Engine-Instanz her und erweitern Sie anschließend die Instanz.

  2. Erweitern Sie Datenbanken, und wählen Sie den Namen der zu trennenden Benutzerdatenbank aus.

  3. Klicken Sie mit der rechten Maustaste auf den Datenbanknamen und dann auf Eigenschaften. Navigieren Sie zur Seite Dateien, und überprüfen Sie die Einträge in der Tabelle Datenbankdateien:.

Berücksichtigen Sie alle Dateien, die der Datenbank zugeordnet sind, bevor Sie diese trennen, verschieben und anfügen. Fahren Sie dann mit den Schritten zum Trennen bzw. Anfügen von Datenbanken sowie dem Kopieren von Dateien im nächsten Abschnitt fort. Weitere Informationen finden Sie unter Trennen einer Datenbank.

Anfügen einer Datenbank

  1. Stellen Sie in SQL Server Management Studio über den Objekt-Explorer eine Verbindung mit einer SQL Server-Datenbank-Engine-Instanz her und wählen Sie dann Erweitern der Instanzansicht in SSMS.

  2. Klicken Sie mit der rechten Maustaste auf Datenbanken und dann auf Anfügen.

  3. Klicken Sie im Dialogfeld Datenbanken anfügen zum Auswählen der anzufügenden Datenbanken auf Hinzufügen. Wählen Sie im Dialogfeld Datenbankdateien suchen den Speicherort der Datenbank aus, und erweitern Sie die Verzeichnisstruktur, um die MDF-Datei der Datenbank zu suchen und auszuwählen. Beispiel:

    C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\DATA\AdventureWorks2022_Data.mdf

    Wichtig

    Wenn Sie versuchen, eine Datenbank auszuwählen, die bereits angefügt wurde, wird ein Fehler generiert.

    Anzufügende Datenbanken
    Zeigt Informationen zu den ausgewählten Datenbanken an.

    <Keine Spaltenüberschrift>
    Zeigt ein Symbol an, das den Status des Anfügevorgangs angibt. Die möglichen Symbole werden in der Beschreibung Status beschrieben.

    Speicherort für MDF-Datei
    Zeigt den Pfad und den Dateinamen der ausgewählten MDF-Datei an.

    Database Name
    Zeigt den Namen der Datenbank an.

    Anfügen als
    Gibt wahlweise einen anderen Namen für die anzufügende Datenbank an.

    Besitzer
    Zeigt eine Dropdownliste mit möglichen Datenbankbesitzern an, aus der Sie wahlweise einen anderen Besitzer auswählen können.

    Status
    Hiermit wird der Status der Datenbank gemäß der folgenden Tabelle angezeigt:

    Symbol Statustext Beschreibung
    (Kein Symbol) (Kein Text) Der Anfügvorgang wurde nicht gestartet oder steht möglicherweise für dieses Objekt aus. Dies ist der Standardwert bei Öffnen des Dialogfelds.
    Grünes, nach rechts zeigendes Dreieck In Bearbeitung Das Anfügen hat begonnen, ist aber noch nicht abgeschlossen.
    Grünes Häkchen Erfolgreich Das Objekt wurde erfolgreich angefügt.
    Roter Kreis mit einem weißen Kreuz darin Fehler Beim Anfügen ist ein Fehler aufgetreten. Der Vorgang konnte deshalb nicht erfolgreich abgeschlossen werden.
    Kreis mit zwei schwarzen Quadranten (links und rechts) und zwei weißen Quadranten (oben und unten) darin Beendet Der Anfügvorgang wurde nicht erfolgreich abgeschlossen, da Sie den Vorgang beendet haben.
    Kreis mit einem gekrümmten Pfeil darin, der entgegengesetzt der Uhrzeigerrichtung zeigt Rollback wurde ausgeführt Anfügen war erfolgreich, es wurde jedoch ein Rollback durchgeführt, weil beim Anfügen eines anderen Objekts ein Fehler aufgetreten ist.

    Meldung
    Zeigt entweder eine leere Meldung oder einen „Datei nicht gefunden“-Hyperlink an.

    Add (Hinzufügen)
    Suchen Sie die erforderlichen Hauptdatenbankdateien. Wenn Sie eine MDF-Datei auswählen, werden entsprechende Informationen automatisch in die jeweiligen Felder des Rasters Anzufügende Datenbank eingetragen.

    Remove
    Entfernt die ausgewählte Datei aus dem Raster Anzufügende Datenbank .

    <database_name> “ Datenbankdetails
    Zeigt die Namen der anzufügenden Dateien an. Klicken Sie auf die Schaltfläche zum Durchsuchen (), um den Pfadnamen einer Datei zu überprüfen oder zu ändern.

    Hinweis

    Wenn keine Datei vorhanden ist, wird in der Spalte Nachricht „Nicht gefunden“ angezeigt. Wenn eine Protokolldatei nicht gefunden wird, ist sie in einem anderen Verzeichnis vorhanden oder wurde gelöscht. Dann müssen Sie entweder den Dateipfad im Raster Datenbankdetails ändern, um auf den richtigen Pfad zu verweisen, oder die Protokolldatei aus dem Raster entfernen. Wenn keine .ndf-Datei gefunden wurde, müssen Sie ihren Pfad im Raster aktualisieren, um auf den richtigen Pfad zu verweisen.

    Originaldateiname
    Zeigt den Namen der angefügten Datei an, die zur Datenbank gehört.

    Dateityp
    Gibt den Dateityp an: Datendatei oder Protokolldatei.

    Aktueller Dateipfad
    Zeigt den Pfad zur ausgewählten Datenbankdatei an Die Pfadangabe kann manuell bearbeitet werden.

    Meldung
    Zeigt entweder eine leere Meldung oder einen „Datei nicht gefunden“-Hyperlink an.

Verwenden von Transact-SQL

Vor dem Verschieben einer Datenbank

Wenn Sie eine Datenbank verschieben, bevor sie von ihrer vorhandenen SQL Server-Instanz getrennt wird, verwenden Sie die Systemkatalogansicht sys.database_files, um die Dateien zu überprüfen, die der Datenbank und ihren aktuellen Speicherorten zugeordnet sind. Weitere Informationen finden Sie unter sys.database_files (Transact-SQL).

  1. Klicken Sie in SQL Server Management Studio auf Neue Abfrage, um den Abfrage-Editor zu öffnen.

  2. Kopieren Sie das folgende Transact-SQL-Skript in den Abfrage-Editor, und klicken Sie dann auf Ausführen. Dieses Skript zeigt den Speicherort der physischen Datenbankdateien an. Achten Sie darauf, beim Verschieben der Datenbank über „Trennen“ bzw. „Anfügen“ alle Dateien zu berücksichtigen.

    USE [database_name] 
    GO  
    SELECT type_desc, name, physical_name from sys.database_files;
    

Berücksichtigen Sie alle Dateien, die der Datenbank zugeordnet sind, bevor Sie diese trennen, verschieben und anfügen. Fahren Sie dann mit den Schritten zum Trennen bzw. Anfügen von Datenbanken sowie dem Kopieren von Dateien im nächsten Abschnitt fort. Weitere Informationen finden Sie unter Trennen einer Datenbank.

So fügen Sie eine Datenbank an

  1. Stellen Sie eine Verbindung mit dem Datenbank-Engineher.

  2. Klicken Sie in der Standardleiste auf Neue Abfrage.

  3. Verwenden Sie die Anweisung CREATE DATABASE mit der FOR ATTACH-Klausel.

    Kopieren Sie das folgende Beispiel in das Abfragefenster, und klicken Sie dann auf Ausführen. In diesem Beispiel werden alle Dateien der Datenbank AdventureWorks2022 angefügt, und die Datenbank wird in MyAdventureWorks umbenannt.

    CREATE DATABASE MyAdventureWorks   
        ON (FILENAME = 'C:\MySQLServer\AdventureWorks_Data.mdf'),   
        (FILENAME = 'C:\MySQLServer\AdventureWorks_Log.ldf')   
        FOR ATTACH;  
    

    Ihre Datenbank kann über zusätzliche Datendateien (häufig MDF oder NDF) verfügen und zusätzliche Dateien erfordern, die in der CREATE DATABASE ... FOR ATTACH-Anweisung enthalten sein müssen. Darüber hinaus müssen alle Dateigruppen für FILESTREAM-Daten ebenfalls in die Anweisung eingeschlossen werden. Weitere Informationen zum Anfügen einer FILESTREAM-fähigen Datenbank finden Sie unter Verschieben einer FILESTREAM-aktivierten Datenbank.

    Hinweis

    Alternativ können Sie die gespeicherte Prozedur sp_attach_db oder sp_attach_single_file_db verwenden. Diese Prozeduren werden jedoch in einer zukünftigen Version von Microsoft SQL Server entfernt. Nutzen Sie diese Funktionen bei Neuentwicklungen nicht mehr, und planen Sie die Änderung von Anwendungen, die diese Funktion zurzeit verwenden. Stattdessen wird die Verwendung von CREATE DATABASE ... FOR ATTACH empfohlen.

Nach dem Durchführen eines Upgrades für eine SQL Server-Datenbank

Kompatibilitätsgrad der Datenbank

Nachdem Sie mithilfe der Anfügmethode ein Upgrade für eine Datenbank durchgeführt haben, wird die Datenbank verfügbar. Für die Datenbank wird automatisch ein Upgrade auf die interne Versionsebene der neuen Instanz durchgeführt. Wenn die Datenbank Volltextindizes aufweist, werden diese beim Upgrade entweder importiert, zurückgesetzt oder neu erstellt, je nach der Einstellung der Servereigenschaft Volltextupgrade-Option . Wenn die Upgradeoption auf Importieren oder Neu erstellen festgelegt ist, sind die Volltextindizes während des Upgrades nicht verfügbar. Abhängig von der Menge der indizierten Daten kann der Import mehrere Stunden dauern, und die Neuerstellung kann bis zu 10-mal länger dauern. Wenn die Upgradeoption auf Importierenfestgelegt und kein Volltextkatalog verfügbar ist, werden die zugehörigen Volltextindizes neu erstellt.

Nach dem Upgrade verbleibt der Datenbank-Kompatibilitätsgrad auf dem Kompatibilitätsgrad vor dem Upgrade, es sei denn, der vorherige Kompatibilitätsgrad wird in der neuen Version nicht unterstützt. In diesem Fall wird der Datenbank-Kompatibilitätsgrad, für den ein Upgrade durchgeführt wurde, auf den niedrigsten unterstützten Kompatibilitätsgrad festgelegt. Wenn Sie beispielsweise eine Datenbank anfügen, die vor dem Anfügen an eine Instanz von SQL Server 2019 (15.x) den Kompatibilitätsgrad 90 hatte, wird der Kompatibilitätsgrad nach dem Upgrade auf 100 festgelegt, also auf den niedrigsten in SQL Server 2019 (15.x) unterstützten Kompatibilitätsgrad. Weitere Informationen finden Sie unter ALTER DATABASE-Kompatibilitätsgrad (Transact-SQL).

Change Data Capture (CDC)

Wenn Sie eine Datenbank aus einer Instanz von SQL Server 2014 (12.x) oder früher anfügen, für die Change Data Capture (CDC) aktiviert ist, müssen Sie den folgenden Befehl ausführen, um ein Upgrade für die CDC-Metadaten durchzuführen:

USE <database name>
EXEC sys.sp_cdc_vupgrade  

Weitere Informationen finden Sie unter Fehler beim Anfügen einer CDC-fähigen Datenbank an eine Instanz von SQL Server 2016 oder SQL Server 2017 unter Windows.

Weitere Informationen

Nächste Schritte