Anfügen und Trennen von Datenbanken (SQL Server)Database Detach and Attach (SQL Server)

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

Die Daten- und Transaktionsprotokolldateien einer Datenbank können getrennt und anschließend an dieselbe oder eine andere Instanz von SQL ServerSQL Serverangefügt werden.The data and transaction log files of a database can be detached and then reattached to the same or another instance of SQL ServerSQL Server. Das Trennen und Anfügen einer Datenbank ist hilfreich, wenn Sie die Datenbank in eine andere Instanz von SQL ServerSQL Server auf demselben Computer ändern oder wenn Sie die Datenbank verschieben möchten.Detaching and attaching a database is useful if you want to change the database to a different instance of SQL ServerSQL Server on the same computer or to move the database.

SecuritySecurity

Dateizugriffsberechtigungen werden während einer Reihe von Datenbankvorgängen festgelegt, einschließlich des Trennens oder Anfügens einer Datenbank.File access permissions are set during a number of database operations, including detaching or attaching a database.

Wichtig

Das Anfügen oder Wiederherstellen von Datenbanken aus unbekannten oder nicht vertrauenswürdigen Quellen wird nicht empfohlen.We recommend that you do not attach or restore databases from unknown or untrusted sources. Solche Datenbanken können bösartigen Code enthalten, der möglicherweise unbeabsichtigten Transact-SQLTransact-SQL -Code ausführt oder Fehler verursacht, indem er das Schema oder die physische Datenbankstruktur ändert.Such databases could contain malicious code that might execute unintended Transact-SQLTransact-SQL code or cause errors by modifying the schema or the physical database structure.
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.Before you use a database from an unknown or untrusted source, run DBCC CHECKDB on the database on a nonproduction server and also examine the code, such as stored procedures or other user-defined code, in the database.

Trennen einer DatenbankDetaching a Database

Durch das Trennen einer Datenbank wird diese aus der Instanz von SQL ServerSQL Server entfernt. Die Datenbank selbst bleibt jedoch innerhalb der Daten- und Transaktionsprotokolldateien intakt.Detaching a database removes it from the instance of SQL ServerSQL Server but leaves the database intact within its data files and transaction log files. Diese Dateien können anschließend verwendet werden, um die Datenbank einer beliebigen Instanz von SQL ServerSQL Serveranzufügen. Darin eingeschlossen ist der Server, von dem die Datenbank ursprünglich getrennt wurde.These files can then be used to attach the database to any instance of SQL ServerSQL Server, including the server from which the database was detached.

Eine Datenbank kann in folgenden Fällen nicht getrennt werden:You cannot detach a database if any of the following are true:

  • Die Datenbank ist repliziert und veröffentlicht.The database is replicated and published. Wenn die Datenbank repliziert ist, muss deren Veröffentlichung aufgehoben werden.If replicated, the database must be unpublished. Bevor Sie die Datenbank trennen können, müssen Sie die Veröffentlichung deaktivieren, indem Sie sp_replicationdboptionausführen.Before you can detach it, you must disable publishing by running sp_replicationdboption.

    Hinweis

    Wenn Sie sp_replicationdboptionnicht verwenden können, können Sie die Replikation durch Ausführen von sp_removedbreplicationentfernen.If you cannot use sp_replicationdboption, you can remove replication by running sp_removedbreplication.

  • Eine Datenbankmomentaufnahme ist in der Datenbank vorhanden.A database snapshot exists on the database.

    Bevor Sie die Datenbank trennen können, müssen Sie alle Momentaufnahmen löschen.Before you can detach the database, you must drop all of its snapshots. Weitere Informationen finden Sie unter Löschen einer Datenbank-Momentaufnahme (Transact-SQL)angefügt werden.For more information, see Drop a Database Snapshot (Transact-SQL).

    Hinweis

    Eine Datenbankmomentaufnahme kann nicht getrennt oder angefügt werden.A database snapshot cannot be detached or attached.

  • Die Datenbank wird in einer Datenbank-Spiegelungssitzung gespiegelt.The database is being mirrored in a database mirroring session.

    Die Datenbank kann nur getrennt werden, wenn die Sitzung beendet wird.The database cannot be detached unless the session is terminated. Weitere Informationen finden Sie unter Entfernen der Datenbankspiegelung (SQL Server).For more information, see Removing Database Mirroring (SQL Server).

  • Die Datenbank ist fehlerverdächtig.The database is suspect. Eine fehlerverdächtige Datenbank kann nicht getrennt werden. Zum Trennen müssen Sie für die Datenbank den Notfallmodus aktivieren.A suspect database cannot be detached; before you can detach it, you must put it into emergency mode. Weitere Informationen zum Aktivieren des Notfallmodus für eine Datenbank finden Sie unter ALTER DATABASE (Transact-SQL).For more information about how to put a database into emergency mode, see ALTER DATABASE (Transact-SQL).

  • Die Datenbank ist eine Systemdatenbank.The database is a system database.

Sichern, Wiederherstellen und TrennenBackup and Restore and Detach

Beim Trennen einer schreibgeschützten Datenbank gehen Informationen zu den differenziellen Basen von differenziellen Sicherungen verloren.Detaching a read-only database loses information about the differential bases of differential backups. Weitere Informationen finden Sie unter Differenzielle Sicherungen (SQL Server).For more information, see Differential Backups (SQL Server).

Antworten auf Fehler beim TrennenResponding to Detach Errors

Fehler beim Trennen einer Datenbank können verhindern, dass die Datenbank ordnungsgemäß geschlossen wird und das Transaktionsprotokoll neu erstellt wird.Errors produced while detaching a database can prevent the database from closing cleanly and the transaction log from being rebuilt. Führen Sie die folgenden Maßnahmen aus, falls eine Fehlermeldung angezeigt wird:If you receive an error message, perform the following corrective actions:

  1. Fügen Sie alle zur Datenbank gehörenden Dateien neu an, nicht nur die primäre Datei.Reattach all files associated with the database, not just the primary file.

  2. Beheben Sie das Problem, das die Fehlermeldung verursacht hat.Resolve the problem that caused the error message.

  3. Trennen Sie die Datenbank erneut.Detach the database again.

Anfügen einer DatenbankAttaching a Database

Eine kopierte oder getrennte SQL ServerSQL Server -Datenbank kann angefügt werden.You can attach a copied or detached SQL ServerSQL Server database. Wenn Sie eine SQL Server 2005 (9.x)SQL Server 2005 (9.x) -Datenbank mit Volltextkatalogdateien an eine SQL Server 2019 (15.x)SQL Server 2019 (15.x) -Serverinstanz anfügen, werden die Katalogdateien von ihrem vorherigen Speicherort aus zusammen mit den anderen Datenbankdateien angefügt. Dies entspricht der Vorgehensweise in SQL Server 2005 (9.x)SQL Server 2005 (9.x).When you attach a SQL Server 2005 (9.x)SQL Server 2005 (9.x) database that contains full-text catalog files onto a SQL Server 2019 (15.x)SQL Server 2019 (15.x) server instance, the catalog files are attached from their previous location along with the other database files, the same as in SQL Server 2005 (9.x)SQL Server 2005 (9.x). Weitere Informationen finden Sie unter Upgrade der Volltextsuche.For more information, see Upgrade Full-Text Search.

Wenn Sie eine Datenbank anfügen, müssen alle Datendateien (MDF- und NDF-Dateien) verfügbar sein.When you attach a database, all data files (MDF and NDF files) must be available. 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.If any data file has a different path from when the database was first created or last attached, you must specify the current path of the file.

Hinweis

Wenn die angefügte primäre Datendatei schreibgeschützt ist, geht Datenbank-EngineDatabase Engine davon aus, dass auch die Datenbank schreibgeschützt ist.If the primary data file being attached is read-only, the Datenbank-EngineDatabase Engine assumes that the database is read-only.

Wenn eine verschlüsselte Datenbank zum ersten Mal an eine neue Instanz von SQL ServerSQL Server angefügt wird, muss der Datenbankbesitzer den Masterschlüssel der Datenbank öffnen, indem er die folgende Anweisung ausführt: OPEN MASTER KEY DECRYPTION BY PASSWORD = 'password'.When an encrypted database is first attached to an instance of SQL ServerSQL Server, the database owner must open the master key of the database by executing the following statement: OPEN MASTER KEY DECRYPTION BY PASSWORD = 'password'. Es empfiehlt sich, die automatische Entschlüsselung des Masterschlüssels zu aktivieren, indem folgende Anweisung ausgeführt wird: ALTER MASTER KEY ADD ENCRYPTION BY SERVICE MASTER KEY.We recommend that you enable automatic decryption of the master key by executing the following statement: ALTER MASTER KEY ADD ENCRYPTION BY SERVICE MASTER KEY. Weitere Informationen finden Sie unter CREATE MASTER KEY (Transact-SQL) und ALTER MASTER KEY (Transact-SQL).For more information, see CREATE MASTER KEY (Transact-SQL) and ALTER MASTER KEY (Transact-SQL).

Die Anforderungen für das Anfügen von Protokolldateien hängen wie im Folgenden beschrieben teilweise davon ab, ob die Datenbank Lese-/Schreibzugriff aufweist oder schreibgeschützt ist:The requirement for attaching log files depends partly on whether the database is read-write or read-only, as follows:

  • Für eine Datenbank mit Lese-/Schreibzugriff können Sie gewöhnlich eine Protokolldatei in einem neuen Speicherort anfügen.For a read-write database, you can usually attach a log file in a new location. In manchen Fällen sind zum erneuten Anfügen der Datenbank jedoch die vorhandenen Protokolldateien erforderlich.However, in some cases, reattaching a database requires its existing log files. Bewahren Sie daher unbedingt immer alle getrennten Protokolldateien auf, bis die Datenbank erfolgreich ohne sie angefügt wurde.Therefore, it is important to always keep all the detached log files until the database has been successfully attached without them.

    Wenn eine Datenbank mit Lese-/Schreibzugriff eine einzige Protokolldatei aufweist und Sie keinen neuen Speicherort für die Protokolldatei angeben, wird beim Anfügen im alten Speicherort nach der Datei gesucht.If a read-write database has a single log file and you do not specify a new location for the log file, the attach operation looks in the old location for the file. Wenn sie gefunden wird, wird die alte Protokolldatei verwendet, unabhängig davon, ob die Datenbank ordnungsgemäß heruntergefahren wurde.If it is found, the old log file is used, regardless of whether the database was shut down cleanly. Wenn allerdings die alte Protokolldatei nicht gefunden wird und die Datenbank ordnungsgemäß heruntergefahren wurde und keine aktive Protokollkette aufweist, wird beim Anfügen versucht, eine neue Protokolldatei für die Datenbank zu erstellen.However, if the old log file is not found and if the database was shut down cleanly and has no active log chain, the attach operation attempts to build a new log file for the database.

  • Wenn die angefügte primäre Datendatei schreibgeschützt ist, geht Datenbank-EngineDatabase Engine davon aus, dass auch die Datenbank schreibgeschützt ist.If the primary data file being attached is read-only, the Datenbank-EngineDatabase Engine assumes that the database is read-only. Für eine schreibgeschützte Datenbank müssen die Protokolldateien in dem Speicherort vorhanden sein, der in der primären Datei der Datenbank angegeben ist.For a read-only database, the log file or files must be available at the location specified in the primary file of the database. Eine neue Protokolldatei kann nicht erstellt werden, weil SQL ServerSQL Server den in der primären Datei gespeicherten Protokollspeicherort nicht aktualisieren kann.A new log file cannot be built because SQL ServerSQL Server cannot update the log location stored in the primary file.

Ändern von Metadaten beim Anfügen einer DatenbankMetadata Changes on Attaching a Database

Wenn eine schreibgeschützte Datenbank getrennt und dann erneut angefügt wird, gehen die Sicherungsinformationen zur aktuellen differenziellen Basis verloren.When a read-only database is detached and then reattached, the backup information about the current differential base is lost. Bei der differenziellen Basis handelt es sich um die letzte vollständige Sicherung aller Daten in der Datenbank oder einer Teilmenge ihrer Dateien oder Dateigruppen.The differential base is the most recent full backup of all the data in the database or in a subset of the files or filegroups of the database. Ohne die Basissicherungsinformationen ist die master -Datenbank nicht mehr mit der schreibgeschützten Datenbank synchronisiert. Daher können später erstellte differenzielle Sicherungen zu unerwarteten Ergebnissen führen.Without the base-backup information, the master database becomes unsynchronized with the read-only database, so differential backups taken thereafter may provide unexpected results. Wenn Sie deshalb differenzielle Sicherungen für eine schreibgeschützte Datenbank verwenden, sollten Sie nach dem erneuten Anfügen der Datenbank eine neue differenzielle Basis einrichten, indem Sie eine vollständige Sicherung erstellen.Therefore, if you are using differential backups with a read-only database, you should establish a new differential base by taking a full backup after you reattach the database. Informationen zum Verwenden von differenziellen Sicherungen finden Sie unter Differenzielle Sicherungen (SQL Server).For information about differential backups, see Differential Backups (SQL Server).

Beim Anfügen wird die Datenbank gestartet.On attach, database startup occurs. Im Allgemeinen wird die Datenbank beim Anfügen in genau demselben Status wieder verfügbar gemacht, in dem sie sich unmittelbar vor dem Trennen oder Kopieren befunden hat.Generally, attaching a database places it in the same state that it was in when it was detached or copied. Die datenbankübergreifenden Besitzketten für die Datenbank werden durch Trenn- und Anfügevorgänge jedoch deaktiviert.However, attach-and-detach operations both disable cross-database ownership chaining for the database. Informationen zum Aktivieren der Verkettung finden Sie unter Datenbankübergreifende Besitzverkettung (Serverkonfigurationsoption).For information about how to enable chaining, see cross db ownership chaining Server Configuration Option.

Wichtig

Standardmäßig und aus Sicherheitsgründen sind die Optionen für is_broker_enabled, is_honoor_broker_priority_on und is_trustworthy_on auf OFF festgelegt, wenn die Datenbank angefügt wird.By default and for security, the options for is_broker_enabled, is_honor_broker_priority_on and is_trustworthy_on are set to OFF whenever the database is attached. Informationen darüber, wie diese Optionen auf ON festgelegt werden, finden Sie unter ALTER DATABASE (Transact-SQL).For information about how to set these options on, see ALTER DATABASE (Transact-SQL). Weitere Informationen zu Metadaten finden Sie unter Verwalten von Metadaten beim Bereitstellen einer Datenbank auf einem anderen Server.For more information about metadata, see Manage metadata when making a database available on another server.

Sichern, Wiederherstellen und AnfügenBackup and Restore and Attach

Eine Datenbank mit Wiederherstellungsdateien kann ebenso wie eine Datenbank, die vollständig oder teilweise offline ist, nicht angefügt werden.Like any database that is fully or partially offline, a database with restoring files cannot be attached. Sie können die Datenbank anfügen, wenn Sie die Wiederherstellungssequenz beenden.If you stop the restore sequence, you can attach the database. Sie können die Wiederherstellungssequenz anschließend erneut starten.Then, you can restart the restore sequence.

Anfügen einer Datenbank an eine andere ServerinstanzAttaching a Database to Another Server Instance

Wichtig

Eine Datenbank, die in einer neueren Version von SQL ServerSQL Server erstellt wurde, kann in früheren Versionen nicht angefügt werden.A database created by a more recent version of SQL ServerSQL Server cannot be attached in earlier versions. Dies verhindert, dass die Datenbank mit einer älteren Version der Datenbank-EngineDatabase Engine physisch verwendet wird.This precludes the database from being physically used with an older version of the Datenbank-EngineDatabase Engine. Dies bezieht sich jedoch auf den Zustand der Metadaten und besitzt keine Auswirkungen auf den Datenbank-Kompatibilitätsgrad.However, this relates to metadata state and does not affect the database compatibility level. Weitere Informationen finden Sie unter ALTER DATABASE-Kompatibilitätsgrad (Transact-SQL).For more information, see ALTER DATABASE Compatibility Level (Transact-SQL).

Wenn Sie eine Datenbank an eine andere Serverinstanz anfügen, müssen Sie die Metadaten für die Datenbank, wie Anmeldenamen und Aufträge, auf der anderen Serverinstanz unter Umständen teilweise oder vollständig neu erstellen, um Benutzern und Anwendungen ein konsistentes Verhalten zu bieten.When you attach a database onto another server instance, to provide a consistent experience to users and applications, you might have to re-create some or all of the metadata for the database, such as logins and jobs, on the other server instance. Weitere Informationen finden Sie unter Verwalten von Metadaten beim Bereitstellen einer Datenbank auf einer anderen Serverinstanz (SQL Server).For more information, see Manage metadata when making a aatabase available on another server instance (SQL Server).

Verwandte AufgabenRelated Tasks

So trennen Sie eine DatenbankTo detach a database

So fügen Sie eine Datenbank anTo attach a database

So aktualisieren Sie eine Datenbank durch Trennen und AnfügenTo upgrade a database using detach and attach operations

So verschieben Sie eine Datenbank durch Trennen und AnfügenTo move a database using detach and attach operations

So löschen Sie eine Datenbank-MomentaufnahmeTo delete a database snapshot

Weitere InformationenSee Also

Datenbankdateien und DateigruppenDatabase Files and Filegroups