Verschieben einer durch TDE geschützten Datenbank in eine andere SQL Server-Instanz

Gilt für:SQL Server

In diesem Artikel wird beschrieben, wie Sie eine Datenbank mithilfe der transparenten Datenverschlüsselung (TDE) schützen und die Datenbank dann mithilfe von SQL Server Management Studio oder Transact-SQL in eine andere Instanz von SQL Server verschieben. TDE führt die E/A-Verschlüsselung und -Entschlüsselung der Daten- und Protokolldateien in Echtzeit durch. Die Verschlüsselung verwendet einen Datenbank-Verschlüsselungsschlüssel (DEK), der im Startdatensatz der Datenbank gespeichert wird und während der Wiederherstellung zur Verfügung steht. Der DEK ist ein symmetrischer Schlüssel, der durch ein in der master-Datenbank des Servers gespeichertes Zertifikat gesichert wird, oder ein asymmetrischer Schlüssel, der von einem EKM-Modul geschützt wird.

Begrenzungen

  • Beim Verschieben einer TDE-geschützten Datenbank muss auch das Zertifikat oder der asymmetrische Schlüssel verschoben werden, mit dem der DEK geöffnet wird. Das Zertifikat oder der asymmetrische Schlüssel muss in der master Datenbank des Zielservers installiert werden, damit SQL Server auf die Datenbankdateien zugreifen kann. Weitere Informationen finden Sie unter Transparent data encryption (TDE).

  • Bewahren Sie Kopien der Zertifikatdatei und der Datei mit dem privaten Schlüssel auf, um das Zertifikat wiederherzustellen. Das Kennwort für den privaten Schlüssel muss nicht mit dem Kennwort für den Datenbankmasterschlüssel übereinstimmen.

  • SQL Server speichert die hier erstellten C:\Program Files\Microsoft SQL Server\MSSQL<xx>.MSSQLSERVER\MSSQL\DATA Dateien standardmäßig in der <xx> Versionsnummer.

Berechtigungen

  • Erfordert CONTROL DATABASE die Berechtigung für die master Datenbank zum Erstellen des Datenbankmasterschlüssels.

  • Erfordert CREATE CERTIFICATE die Berechtigung für die master Datenbank, um das Zertifikat zu erstellen, das die DEK schützt.

  • Erfordert die CONTROL DATABASE-Berechtigung für die verschlüsselte Datenbank und die VIEW DEFINITION-Berechtigung für das Zertifikat oder den asymmetrischen Schlüssel, die zum Verschlüsseln des Verschlüsselungsschlüssels für die Datenbank verwendet werden.

Erstellen einer Datenbank, die durch transparente Datenverschlüsselung geschützt ist

Die folgenden Verfahren zeigen, wie Sie eine von TDE geschützte Datenbank mithilfe von SQL Server Management Studio und Transact-SQL erstellen.

Verwenden von SQL Server Management Studio

  1. Erstellen Sie einen Datenbankmasterschlüssel und ein Zertifikat in der master Datenbank. Weitere Informationen finden Sie weiter unten in diesem Artikel unter Verwenden von Transact-SQL .

  2. Erstellen Sie eine Sicherung des Serverzertifikats in der master Datenbank. Weitere Informationen finden Sie weiter unten in diesem Artikel unter Verwenden von Transact-SQL .

  3. Klicken Sie im Objekt-Explorer mit der rechten Maustaste auf den Ordner Datenbanken , und klicken Sie dann auf Neue Datenbank.

  4. Geben Sie im Dialogfeld Neue Datenbank in das Feld Datenbankname den Namen der neuen Datenbank ein.

  5. Geben Sie im Feld Besitzer den Namen des Besitzers der neuen Datenbank ein. Wählen Sie alternativ die Auslassungspunkte (...) aus, um das Dialogfeld "Datenbankbesitzer auswählen" zu öffnen. Weitere Informationen zum Erstellen einer neuen Datenbank finden Sie unter Erstellen einer Datenbank.

  6. Wählen Sie in Objekt-Explorer das Pluszeichen aus, um den Ordner "Datenbanken" zu erweitern.

  7. Klicken Sie mit der rechten Maustaste auf die Datenbank, die Sie erstellt haben, zeigen Sie auf Tasks, und wählen Sie Datenbankverschlüsselung verwaltenaus.

    Die folgenden Optionen sind im Dialogfeld Datenbankverschlüsselung verwalten verfügbar.

    Verschlüsselungsalgorithmus
    Zeigt den für die Datenbankverschlüsselung zu verwendenden Algorithmus an oder legt ihn fest. Der Standardalgorithmus istAES128 . Dieses Feld kann nicht leer sein. Weitere Informationen zu Verschlüsselungsalgorithmen finden Sie unter Auswählen eines Verschlüsselungsalgorithmus.

    Serverzertifikat verwenden
    Legt fest, dass die Verschlüsselung durch ein Zertifikat gesichert wird. Wählen Sie einen Eintrag aus der Liste aus. Wenn Sie nicht über die VIEW DEFINITION Berechtigung für Serverzertifikate verfügen, ist diese Liste leer. Wenn eine Verschlüsselungsmethode für das Zertifikat ausgewählt ist, kann dieser Wert nicht leer sein. Weitere Informationen zu Zertifikaten finden Sie unter SQL Server Certificates and Asymmetric Keys.

    Asymmetrischen Serverschlüssel verwenden
    Legt fest, dass die Verschlüsselung durch einen asymmetrischen Schlüssel gesichert wird. Nur verfügbare asymmetrische Schlüssel werden angezeigt. Nur ein asymmetrischer von einem EKM-Modul geschützter Schlüssel kann mit TDE eine Datenbank verschlüsseln.

    Datenbankverschlüsselung aktivieren
    Ändert die Datenbank, um TDE zu aktivieren bzw. zu deaktivieren.

  8. Wenn Sie fertig sind, wählen Sie OK aus.

Verwenden von Transact-SQL

  1. Stellen Sie im Objekt-Explorer eine Verbindung mit einer Datenbank-Engine-Instanz her.

  2. Klicken Sie in der Standardleiste auf Neue Abfrage.

  3. Kopieren Sie das folgende Beispiel in das Abfragefenster, und klicken Sie dann auf Ausführen.

    -- Create a database master key and a certificate in the master database.
    USE master;
    GO
    
    CREATE MASTER KEY ENCRYPTION BY PASSWORD = '*rt@40(FL&dasl1';
    GO
    
    CREATE CERTIFICATE TestSQLServerCert
        WITH SUBJECT = 'Certificate to protect TDE key'
    GO
    
    -- Create a backup of the server certificate in the master database.
    -- The following code stores the backup of the certificate and the private key file in the default data location for this instance of SQL Server
    -- (C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\DATA).
    BACKUP CERTIFICATE TestSQLServerCert TO FILE = 'TestSQLServerCert'
    WITH PRIVATE KEY (
        FILE = 'SQLPrivateKeyFile',
        ENCRYPTION BY PASSWORD = '*rt@40(FL&dasl1'
    );
    GO
    
    -- Create a database to be protected by TDE.
    CREATE DATABASE CustRecords;
    GO
    
    -- Switch to the new database.
    -- Create a database encryption key, that is protected by the server certificate in the master database.
    -- Alter the new database to encrypt the database using TDE.
    USE CustRecords;
    GO
    
    CREATE DATABASE ENCRYPTION KEY
        WITH ALGORITHM = AES_128 ENCRYPTION BY SERVER CERTIFICATE TestSQLServerCert;
    GO
    
    ALTER DATABASE CustRecords
    SET ENCRYPTION ON;
    GO
    

Weitere Informationen finden Sie unter:

Verschieben einer Datenbank, die durch transparente Datenverschlüsselung geschützt ist

Die folgenden Verfahren zeigen, wie Sie eine von TDE geschützte Datenbank mithilfe von SQL Server Management Studio und Transact-SQL verschieben.

Verwenden von SQL Server Management Studio

  1. Klicken Sie in Objekt-Explorer mit der rechten Maustaste auf die Datenbank, die Sie zuvor verschlüsselt haben, zeigen Sie auf "Aufgaben", und wählen Sie "Trennen" aus.

    Die folgenden Optionen sind im Dialogfeld Datenbank trennen verfügbar.

    Zu trennende Datenbanken
    Führt die zu trennenden Datenbanken auf.

    Database Name
    Zeigt den Namen der zu trennenden Datenbank an.

    Verbindungen löschen
    Trennt die Verbindungen zu der angegebenen Datenbank.

Hinweis

Sie können eine Datenbank nicht mit aktiven Verbindungen trennen.

Statistikaktualisierung
Standardmäßig werden durch den Trennvorgang beim Trennen der Datenbank die veralteten Optimierungsstatistiken beibehalten. Um die vorhandenen Optimierungsstatistiken zu aktualisieren, aktivieren Sie dieses Kontrollkästchen.

Volltextkataloge beibehalten
Standardmäßig werden während des Trennvorgangs alle der Datenbank zugeordneten Volltextkataloge beibehalten. Um sie zu entfernen, deaktivieren Sie das Kontrollkästchen Volltextkataloge beibehalten . Diese Option wird nur angezeigt, wenn Sie ein Upgrade einer Datenbank von SQL Server 2005 (9.x) durchführen.

Status
Zeigt für den Status einen der folgenden Werte an: Bereit oder Nicht bereit.

Meldung
Unter Meldung können folgende Informationen zur Datenbank angezeigt werden:

  • Wenn eine Datenbank an einer Replikation beteiligt ist, hat der Status den Wert Nicht bereit , und unter Meldung wird Die Datenbank wurde repliziertangezeigt.

  • Wenn eine Datenbank über eine oder mehrere aktive Verbindungen verfügt, ist der Status nicht bereit, und in der Spalte "Nachricht" wird number_of_active_connections>aktive Verbindung(en) angezeigt<, z. B. 1 Aktive Verbindungen. Bevor Sie die Datenbank trennen können, müssen Sie durch Auswählen der Option Verbindungen löschenalle aktiven Verbindungen trennen.

Um weitere Informationen zu einer Nachricht zu erhalten, klicken Sie auf den Hyperlinktext, um den Aktivitätsmonitor zu öffnen.

  1. Klickan Sie auf OK.

  2. Verwenden Sie den Windows-Explorer, um Datenbankdateien vom Quellserver an den gleichen Ort auf dem Zielserver zu verschieben oder zu kopieren.

  3. Verwenden Sie Windows-Explorer, um die Sicherung des Serverzertifikats und die Datei mit dem privaten Schlüssel vom Quellserver an den gleichen Ort auf dem Zielserver zu verschieben oder zu kopieren.

  4. Erstellen Sie einen Datenbankmasterschlüssel in der Zielinstanz von SQL Server. Weitere Informationen finden Sie weiter unten in diesem Artikel unter Verwenden von Transact-SQL .

  5. Erstellen Sie anhand der entsprechenden Sicherungsdatei das Serverzertifikat neu. Weitere Informationen finden Sie weiter unten in diesem Artikel unter Verwenden von Transact-SQL .

  6. Klicken Sie in Objekt-Explorer in SQL Server Management Studio mit der rechten Maustaste auf den Ordner "Datenbanken", und wählen Sie "Anfügen" aus.

  7. Wählen Sie im Dialogfeld "Datenbanken anfügen" unter "Datenbanken zum Anfügen" die Option "Hinzufügen" aus.

  8. Wählen Sie im Dialogfeld "Datenbankdateien -server_name suchen" die Datenbankdatei aus, die an den neuen Server angefügt werden soll, und wählen Sie "OK" aus.

    Die folgenden Optionen sind im Dialogfeld Datenbanken anfügen verfügbar.

    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
    Stellt eine Dropdownliste möglicher Datenbankbesitzer bereit, aus denen Sie optional einen anderen Besitzer auswählen können.

    Status
    Zeigt den Status der Datenbank an (siehe folgende Tabelle).

Schaltfläche Statustext Beschreibung
(Kein Symbol) (Kein Text) Der Anfügungsvorgang wurde nicht gestartet oder steht für dieses Objekt möglicherweise aus. Dies ist der Standardwert bei Öffnen des Dialogfelds.
Grünes, nach rechts zeigendes Dreieck Vorgang wird ausgeführt Der Vorgang zum Anfügen wurde gestartet, ist aber nicht abgeschlossen.
Grünes Häkchen Erfolgreich Das Objekt wurde erfolgreich angefügt.
Roter Kreis mit einem weißen Kreuz darin Fehler Fehler beim Anfügen des Vorgangs und nicht erfolgreich abgeschlossen.
Kreis mit zwei schwarzen Quadranten (links und rechts) und zwei weißen Quadranten (oben und unten) darin Beendet Der Anfügungsvorgang wurde nicht erfolgreich abgeschlossen, da der Benutzer den Vorgang beendet hat.
Kreis mit einem gekrümmten Pfeil darin, der entgegengesetzt der Uhrzeigerrichtung zeigt Rollback wurde ausgeführt Der Anfügungsvorgang war erfolgreich, wurde jedoch aufgrund eines Fehlers während der Anlage eines anderen Objekts zurückgesetzt.

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

Add (Hinzufügen)
Suchen Sie die erforderlichen Hauptdatenbankdateien. Wenn der Benutzer eine MDF-Datei auswählt, 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 .

Details zur Datenbank "<database_name>"
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 eine NDF-Datendatei nicht gefunden wird, müssen Sie den Pfad im Raster aktualisieren, um auf den richtigen Speicherort zu verweisen.

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

Dateityp
Gibt den Datei-, Daten- oder Protokolltyp an.

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

  1. Stellen Sie im Objekt-Explorer eine Verbindung mit einer Datenbank-Engine-Instanz her.

  2. Klicken Sie in der Standardleiste auf Neue Abfrage.

  3. Kopieren Sie das folgende Beispiel in das Abfragefenster, und klicken Sie dann auf Ausführen.

    -- Detach the TDE protected database from the source server.
    USE master;
    GO
    
    EXEC master.dbo.sp_detach_db @dbname = N'CustRecords';
    GO
    
    -- Move or copy the database files from the source server to the same location on the destination server.
    -- Move or copy the backup of the server certificate and the private key file from the source server to the same location on the destination server.
    -- Create a database master key on the destination instance of SQL Server.
    USE master;
    GO
    
    CREATE MASTER KEY ENCRYPTION BY PASSWORD = '*rt@40(FL&dasl1';
    GO
    
    -- Recreate the server certificate by using the original server certificate backup file.
    -- The password must be the same as the password that was used when the backup was created.
    CREATE CERTIFICATE TestSQLServerCert
    FROM FILE = 'TestSQLServerCert'
    WITH PRIVATE KEY (
        FILE = 'SQLPrivateKeyFile',
        DECRYPTION BY PASSWORD = '*rt@40(FL&dasl1'
    );
    GO
    
    -- Attach the database that is being moved.
    -- The path of the database files must be the location where you have stored the database files.
    CREATE DATABASE [CustRecords] ON (FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\DATA\CustRecords.mdf'),
        (FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\DATA\CustRecords_log.LDF')
    FOR ATTACH;
    GO
    

Weitere Informationen finden Sie unter: