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

In diesem Thema wird beschrieben, wie Sie Trenn- und Anfügevorgänge verwenden, um eine SQL Server 2005-, SQL Server 2008- oder SQL Server 2008 R2-Datenbank in SQL Server 2012 zu aktualisieren. Nach dem Anfügen an SQL Server 2012 ist die Datenbank sofort verfügbar und wird automatisch aktualisiert.

In diesem Thema

  • Vorbereitungen:

    Einschränkungen

    Empfehlungen

  • So aktualisieren Sie eine SQL Server-Datenbank:

    Verwenden von Trenn- und Anfügevorgängen

  • Nachverfolgung: Nach dem Aktualisieren einer SQL Server-Datenbank

Vorbereitungen

Einschränkungen

  • Die Systemdatenbanken können nicht angefügt werden.

  • Durch das Anfügen und Trennen wird die datenbankübergreifende Besitzverkettung für die Datenbank deaktiviert, da deren cross db ownership chaining-Option auf 0 festgelegt wird. Informationen zum Aktivieren der Verkettung finden Sie unter Datenbankübergreifende Besitzverkettung (Serverkonfigurationsoption).

  • Wenn Sie eine replizierte Datenbank anfügen, die nicht getrennt, sondern kopiert wurde:

    • Wenn Sie die Datenbank an eine aktualisierte Version derselben Serverinstanz anfügen, müssen Sie sp_vupgrade_replication ausführen, um die Replikation zu aktualisieren, nachdem der Anfügevorgang abgeschlossen wurde. Weitere Informationen finden Sie unter sp_vupgrade_replication (Transact-SQL).

    • Wenn Sie die Datenbank an eine andere Serverinstanz anfügen, müssen Sie (unabhängig von der Version) sp_removedbreplication ausführen, um die Replikation zu entfernen, nachdem der Anfügevorgang abgeschlossen wurde. Weitere Informationen finden Sie unter sp_removedbreplication (Transact-SQL).

Empfehlungen

Das Anfügen oder Wiederherstellen von Datenbanken aus unbekannten oder nicht vertrauenswürdigen Quellen wird nicht empfohlen. Solche Datenbanken können bösartigen 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 in der Datenbank aus. Überprüfen Sie außerdem den Code in der Datenbank, wie z. B. gespeicherte Prozeduren oder anderen benutzerdefinierten Code.

So aktualisieren Sie eine Datenbank durch Trennen und Anfügen

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

  2. Optional können Sie die getrennte(n) Datenbankdatei(en) und die Protokolldatei(en) verschieben.

    Sie sollten die Protokolldateien zusammen mit den Datendateien verschieben, auch 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.

    HinweisHinweis

    Wenn Sie versuchen, die Datenbank ohne Angabe der Protokolldatei anzufügen, wird die Protokolldatei an ihrem ursprünglichen Speicherort gesucht. Ist die ursprüngliche Kopie des Protokolls an diesem Speicherort noch vorhanden, 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 die Instanz von SQL Server 2012 an. Weitere Informationen finden Sie unter Anfügen einer Datenbank.

Pfeilsymbol, dass mit dem Link "Zurück zum Anfang" verwendet wird[Top]

Beispiel

Im folgenden Beispiel wird eine Kopie einer Datenbank aus einer früheren Version von SQL Server aktualisiert. Die Transact-SQL-Anweisungen werden in einem Abfrage-Editorfenster ausgeführt, das mit der Serverinstanz verbunden ist, an die es angefügt ist.

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

    USE master;
    GO
    EXEC sp_detach_db @dbname = N'MyDatabase';
    GO
    
  2. Kopieren Sie die Daten- und Protokolldateien an den neuen Speicherort, indem Sie die von Ihnen bevorzugte Vorgehensweise verwenden.

    Wichtiger HinweisWichtig

    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 erhält 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 dem Remotedatenträger dem von der SQL Server-Instanz verwendeten Benutzerkonto erteilt werden.

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

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

    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.

Nachverfolgung: Nach dem Aktualisieren einer SQL Server-Datenbank

In der Datenbank enthaltene Volltextindizes werden beim Upgrade je nach der Einstellung der upgrade_option-Servereigenschaft importiert, zurückgesetzt oder neu erstellt. Wenn die Upgradeoption auf Importieren (upgrade_option = 2) oder Neuerstellen (upgrade_option = 0) festgelegt ist, sind die Volltextindizes während des Upgrades nicht verfügbar. Je nach Menge der indizierten Daten kann der Importvorgang mehrere Stunden dauern; die Neuerstellung sogar bis zu zehnmal länger. Wenn die Upgradeoption auf Importieren festgelegt ist und kein Volltextkatalog verfügbar ist, werden die zugehörigen Volltextindizes neu erstellt. Um die Einstellung der Servereigenschaft upgrade_option zu ändern, verwenden Sie sp_fulltext_service.

Datenbank-Kompatibilitätsgrad nach dem Upgrade

War der Kompatibilitätsgrad einer Benutzerdatenbank vor dem Upgrade 90 oder 100, wird er nach dem Upgrade beibehalten. War der Kompatibilitätsgrad der aktualisierten Datenbank vor dem Upgrade 80, wird er auf 90 gesetzt, was dem niedrigsten unterstützten Kompatibilitätsgrad in SQL Server 2012 entspricht. Weitere Informationen finden Sie unter ALTER DATABASE-Kompatibilitätsgrad (Transact-SQL).

Verwalten von Metadaten auf der aktualisierten Serverinstanz

Wenn Sie eine Datenbank an eine andere Serverinstanz anfügen, müssen Sie möglicherweise einen Teil oder auch alle Metadaten für die Datenbank (z. B. Anmeldenamen, Aufträge und Berechtigungen) auf der anderen Serverinstanz erneut erstellen, um Benutzern und Anwendungen ein konsistentes Verhalten bereitzustellen. Weitere Informationen finden Sie unter Verwalten von Metadaten beim Bereitstellen einer Datenbank auf einer anderen Serverinstanz (SQL Server).

Die Verschlüsselung des Diensthauptschlüssels und Datenbank-Hauptschlüssels wird von 3DES in AES geändert.

SQL Server 2012 schützt den Diensthauptschlüssel (Service Master Key, SMK) und den Datenbank-Hauptschlüssel (Database Master Key, DMK) mithilfe des AES-Verschlüsselungsalgorithmus. AES ist ein neuerer Verschlüsselungsalgorithmus als der in früheren Versionen verwendete 3DES-Algorithmus. Wird eine Datenbank zum ersten Mal an eine neue Instanz von SQL Server angefügt oder wiederhergestellt, ist noch keine Kopie des Datenbank-Hauptschlüssels (verschlüsselt vom Diensthauptschlüssel) auf dem Server gespeichert. Der Datenbank-Hauptschlüssel (Database Master Key, DMK) muss mithilfe der OPEN MASTER KEY-Anweisung entschlüsselt werden. Nachdem der Datenbank-Hauptschlüssel entschlüsselt wurde, können Sie für die Zukunft die automatische Entschlüsselung aktivieren, indem Sie die ALTER MASTER KEY REGENERATE-Anweisung verwenden. Auf diese Weise können Sie eine Kopie des mit dem Diensthauptschlüssel (Service Master Key, SMK) verschlüsselten Datenbank-Hauptschlüssels für den Server bereitstellen. Wenn eine Datenbank von einer früheren Version aktualisiert wurde, sollte der DMK neu generiert werden, damit er den neueren AES-Algorithmus verwendet. Weitere Informationen zum Neugenerieren des DMK finden Sie unter ALTER MASTER KEY (Transact-SQL). Die zum Neugenerieren des DMK zum Upgrade auf AES erforderliche Zeit hängt von der Anzahl der Objekte ab, die durch den DMK geschützt werden. Der DMK muss nur einmal auf AES aktualisiert und neu generiert werden. Dies hat keine Auswirkungen auf zukünftige Neugenerierungen im Rahmen einer Schlüsselrotationsstrategie.

Pfeilsymbol, dass mit dem Link "Zurück zum Anfang" verwendet wird[Top]