Anfügen und Trennen von Datenbanken (SQL Server)

Gilt für: SQL Server

Die Daten- und Transaktionsprotokolldateien einer Datenbank können getrennt und anschließend an dieselbe oder eine andere Instanz von SQL Server angefügt werden. Das Trennen und Anfügen einer Datenbank ist hilfreich, wenn Sie die Datenbank in eine andere Instanz von SQL Server auf demselben Computer ändern oder wenn Sie die Datenbank verschieben möchten.

Berechtigungen

Dateizugriffsberechtigungen werden während einer Reihe von Datenbankvorgängen festgelegt, zum Beispiel beim Trennen oder Anfügen einer Datenbank.

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(Transact-SQL) für die Datenbank aus. Überprüfen Sie außerdem den Code in der Datenbank, z. B. gespeicherte Prozeduren oder anderen benutzerdefinierten Code.

Trennen einer Datenbank

Durch das Trennen einer Datenbank wird diese aus der Instanz von SQL Server entfernt. Die Datenbank selbst bleibt jedoch innerhalb der Daten- und Transaktionsprotokolldateien intakt. Diese Dateien können anschließend verwendet werden, um die Datenbank einer beliebigen Instanz von SQL Server anzufügen. Darin eingeschlossen ist der Server, von dem die Datenbank ursprünglich getrennt wurde.

Eine Datenbank kann in folgenden Fällen nicht getrennt werden:

  • Die Datenbank ist repliziert und veröffentlicht. Wenn die Datenbank repliziert ist, muss deren Veröffentlichung aufgehoben werden. Bevor Sie die Datenbank trennen können, müssen Sie die Veröffentlichung deaktivieren, indem Sie sp_replicationdboptionausführen.

    Hinweis

    Wenn Sie sp_replicationdboption nicht verwenden können, können Sie die Replikation durch Ausführen von sp_removedbreplication entfernen.

  • Eine Datenbankmomentaufnahme ist in der Datenbank vorhanden.

    Bevor Sie die Datenbank trennen können, müssen Sie alle Momentaufnahmen löschen. Weitere Informationen finden Sie unter Löschen einer Datenbankmomentaufnahme (Transact-SQL).

    Hinweis

    Eine Datenbankmomentaufnahme kann nicht getrennt oder angefügt werden.

  • Diese Datenbank ist Bestandteil einer Always On-Verfügbarkeitsgruppe.

    Die Datenbank kann erst getrennt werden, wenn sie aus der Verfügbarkeitsgruppe entfernt wurde. Weitere Informationen finden Sie unter Entfernen einer primären Datenbank aus einer Always On-Verfügbarkeitsgruppe.

  • Die Datenbank wird in einer Datenbank-Spiegelungssitzung gespiegelt.

    Die Datenbank kann erst getrennt werden, nachdem die Sitzung beendet wurde. Weitere Informationen finden Sie unter Entfernen der Datenbankspiegelung (SQL Server).

  • Die Datenbank ist fehlerverdächtig. Eine fehlerverdächtige Datenbank kann nicht getrennt werden. Zum Trennen müssen Sie für die Datenbank den Notfallmodus aktivieren. Weitere Informationen zum Aktivieren des Notfallmodus für eine Datenbank finden Sie unter ALTER DATABASE (Transact-SQL).

  • Die Datenbank ist eine Systemdatenbank.

Backup, Wiederherstellen und Trennen

Beim Trennen einer schreibgeschützten Datenbank gehen Informationen zu den differenziellen Basen von differenziellen Sicherungen verloren. Weitere Informationen finden Sie unter Differenzielle Sicherungen (SQL Server).

Umgang mit Fehlern beim Trennen

Fehler beim Trennen einer Datenbank können verhindern, dass die Datenbank ordnungsgemäß geschlossen wird und das Transaktionsprotokoll neu erstellt wird. Führen Sie die folgenden Maßnahmen aus, falls eine Fehlermeldung angezeigt wird:

  1. Fügen Sie alle zur Datenbank gehörenden Dateien neu an, nicht nur die primäre Datei.

  2. Beheben Sie das Problem, das die Fehlermeldung verursacht hat.

  3. Trennen Sie die Datenbank erneut.

Anfügen einer Datenbank

Eine kopierte oder getrennte SQL Server-Datenbank kann angefügt werden. Wenn Sie eine SQL Server 2005 (9.x)-Datenbank mit Volltextkatalogdateien an eine SQL Server-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). Weitere Informationen finden Sie unter Upgrade der Volltextsuche.

Wenn Sie eine Datenbank anfügen, müssen alle Datendateien (.mdf- und .ndf-Dateien) verfügbar sein. 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.

Hinweis

Wenn die angefügte primäre Datendatei schreibgeschützt ist, geht die Datenbank-Engine davon aus, dass auch die Datenbank schreibgeschützt ist.

Wenn eine verschlüsselte Datenbank zum ersten Mal an eine neue Instanz von SQL Server angefügt wird, muss der Datenbankbesitzer den Hauptschlüssel der Datenbank (DMK) öffnen, indem er die folgende Anweisung ausführt: OPEN MASTER KEY DECRYPTION BY PASSWORD = 'password'. Es empfiehlt sich, die automatische Entschlüsselung des Hauptschlüssels zu aktivieren, indem folgende Anweisung ausgeführt wird: 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).

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:

  • Für eine Datenbank mit Lese-/Schreibzugriff können Sie gewöhnlich eine Protokolldatei in einem neuen Speicherort anfügen. In manchen Fällen sind zum erneuten Anfügen der Datenbank jedoch die vorhandenen Protokolldateien erforderlich. Bewahren Sie daher unbedingt immer alle getrennten Protokolldateien auf, bis die Datenbank erfolgreich ohne sie angefügt wurde.

    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. Wenn sie gefunden wird, wird die alte Protokolldatei verwendet, unabhängig davon, ob die Datenbank ordnungsgemäß heruntergefahren wurde. 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.

  • Wenn die angefügte primäre Datendatei schreibgeschützt ist, geht die Datenbank-Engine davon aus, dass auch die Datenbank schreibgeschützt ist. 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. Eine neue Protokolldatei kann nicht erstellt werden, weil SQL Server den in der primären Datei gespeicherten Protokollspeicherort nicht aktualisieren kann.

Ändern von Metadaten beim Anfügen einer Datenbank

Wenn eine schreibgeschützte Datenbank getrennt und dann erneut angefügt wird, gehen die Sicherungsinformationen zur aktuellen differenziellen Basis verloren. 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. 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. Wenn Sie differenzielle Sicherungen für eine schreibgeschützte Datenbank verwenden, sollten Sie deshalb nach dem erneuten Anfügen der Datenbank eine neue differenzielle Basis einrichten, indem Sie eine vollständige Sicherung vornehmen. Informationen zum Verwenden von differenziellen Sicherungen finden Sie unter Differenzielle Sicherungen (SQL Server).

Beim Anfügen wird die Datenbank gestartet. 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. Die datenbankübergreifenden Besitzketten für die Datenbank werden durch Trenn- und Anfügevorgänge jedoch deaktiviert. Informationen zum Aktivieren der Verkettung finden Sie unter Datenbankübergreifende Besitzverkettung (Serverkonfigurationsoption).

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. Informationen darüber, wie diese Optionen auf ON festgelegt werden, finden Sie unter ALTER DATABASE (Transact-SQL). Weitere Informationen zu Metadaten finden Sie unter Verwalten von Metadaten beim Bereitstellen einer Datenbank auf einem anderen Server.

Backup, Wiederherstellen und Verbinden

Eine Datenbank mit Wiederherstellungsdateien kann ebenso wie eine Datenbank, die vollständig oder teilweise offline ist, nicht angefügt werden. Sie können die Datenbank anfügen, wenn Sie die Wiederherstellungssequenz beenden. Sie können die Wiederherstellungssequenz anschließend erneut starten.

Anfügen einer Datenbank an eine andere Serverinstanz

Wichtig

Eine Datenbank, die in einer aktuelleren Version von SQL Server erstellt wurde, kann in früheren Versionen nicht angefügt werden. So wird verhindert, dass die Datenbank mit einer älteren Version der Datenbank-Engine physisch verwendet wird. Dies bezieht sich jedoch auf den Zustand der Metadaten und besitzt keine Auswirkungen auf den Datenbank-Kompatibilitätsgrad. Weitere Informationen finden Sie unter ALTER DATABASE-(Transact-SQL) Kompatibilitätsgrad.

Wenn Sie eine Datenbank an eine andere Serverinstanz anfügen, müssen Sie die Metadaten für die Datenbank auf der anderen Serverinstanz unter Umständen teilweise oder vollständig neu erstellen, um Benutzern und Anwendungen eine einheitliche Erfahrung zu ermöglichen. Diese Metadaten umfassen z. B. Anmeldungen und Aufträge. Weitere Informationen finden Sie unter Verwalten von Metadaten beim Bereitstellen einer Datenbank auf einem anderen Server.

Aufgabe Artikel
Trennen einer Datenbank - sp_detach_db (Transact-SQL)
- Trennen einer Datenbank
Anfügen einer Datenbank - CREATE DATABASE
- Anfügen einer Datenbank
- sp_attach_db (Transact-SQL)
- sp_attach_single_file_db (Transact-SQL)
So aktualisieren Sie eine Datenbank durch Trennen und Anfügen - Aktualisieren einer Datenbank durch Trennen und Anfügen (Transact-SQL)
So verschieben Sie eine Datenbank durch Trennen und Anfügen - Verschieben einer Datenbank durch Trennen und Anfügen (Transact-SQL)
So löschen Sie eine Datenbankmomentaufnahme - Löschen einer Datenbankmomentaufnahme (Transact-SQL)