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

In diesem Thema wird beschrieben, wie Sie Trennen und Anfügen von Vorgängen zum Upgrade einer Datenbank in SQL Server 2014 verwenden. Nach dem Anfügen an SQL Server 2014 ist die Datenbank sofort verfügbar und wird automatisch aktualisiert.

In diesem Thema

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 Option datenbankübergreifende Besitzverkettung 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

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.

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.

    Hinweis

    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 2014 an. Weitere Informationen finden Sie unter Attach a Database.

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.

    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 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

Wenn die Datenbank Volltextindizes aufweist, werden diese beim Upgrade entweder importiert, zurückgesetzt oder neu erstellt, je nach der Einstellung der Servereigenschaft upgrade_option . Wenn die Upgradeoption auf „Importieren“ (upgrade_option = 2) oder „Neu erstellen“ (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. Verwenden Sie sp_fulltext_service , um die Einstellung der Servereigenschaft upgrade_optionzu ändern.

Datenbank-Kompatibilitätsgrad nach dem Upgrade

War der Kompatibilitätsgrad einer Benutzerdatenbank vor dem Upgrade 100 oder höher, wird er nach dem Upgrade beibehalten. Wenn die Kompatibilitätsebene vor dem Upgrade in der aktualisierten Datenbank 90 ist, wird die Kompatibilitätsstufe auf 100 festgelegt, was die niedrigste unterstützte Kompatibilitätsstufe in SQL Server 2014 ist. 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 und höhere Versionen verwenden den AES-Verschlüsselungsalgorithmus, um den Dienstmasterschlüssel (SMK) und den Datenbankmasterschlüssel (DMK) zu schützen. 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 Serverangefü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.