Dela via


Flytta en TDE-skyddad databas till en annan SQL Server

gäller för:SQL Server

Den här artikeln beskriver hur du skyddar en databas med hjälp av transparent datakryptering (TDE) och sedan flyttar databasen till en annan instans av SQL Server med hjälp av SQL Server Management Studio eller Transact-SQL. TDE utför I/O-kryptering i realtid och dekryptering av data och loggfiler. Krypteringen använder en databaskrypteringsnyckel (DEK), som lagras i databasens startpost för tillgänglighet under återställningen. DEK är en symmetrisk nyckel som skyddas med hjälp av ett certifikat som lagras i master-databasen på servern eller en asymmetrisk nyckel som skyddas av en EKM-modul.

Begränsningar

  • När du flyttar en TDE-skyddad databas måste du också flytta certifikatet eller den asymmetriska nyckel som används för att öppna DEK. Certifikatet eller den asymmetriska nyckeln måste installeras i målserverns master databas så att SQL Server kan komma åt databasfilerna. Mer information finns i Transparent datakryptering (TDE).

  • Du måste behålla kopior av både certifikatfilen och den privata nyckelfilen för att kunna återställa certifikatet. Lösenordet för den privata nyckeln behöver inte vara detsamma som lösenordet för databasens huvudnyckel.

  • SQL Server lagrar filerna som skapas här i C:\Program Files\Microsoft SQL Server\MSSQL<xx>.MSSQLSERVER\MSSQL\DATA som standard, där <xx> är versionsnumret.

Behörigheter

  • Kräver CONTROL DATABASE behörighet på master-databasen för att skapa databashuvudnyckeln.

  • Kräver CREATE CERTIFICATE behörighet på master-databasen för att skapa certifikatet som skyddar DEK.

  • Kräver CONTROL DATABASE behörighet för den krypterade databasen och VIEW DEFINITION behörighet för certifikatet eller den asymmetriska nyckel som används för att kryptera databaskrypteringsnyckeln.

Skapa en databas som skyddas av transparent datakryptering

Följande procedurer visar hur du skapar en databas som skyddas av TDE med hjälp av SQL Server Management Studio och med hjälp av Transact-SQL.

Använda SQL Server Management Studio

  1. Skapa en huvudnyckel och ett certifikat för databasen i master-databasen. Mer information finns i Använda Transact-SQL- senare i den här artikeln.

  2. Skapa en säkerhetskopia av servercertifikatet i master-databasen. Mer information finns i Använda Transact-SQL- senare i den här artikeln.

  3. Högerklicka på mappen Databases i Object Explorer och välj Ny databas.

  4. I dialogrutan Ny databas anger du namnet på den nya databasen i rutan Databasnamn.

  5. I rutan Ägare anger du namnet på den nya databasens ägare. Alternativt väljer du ellipsen (...) för att öppna dialogrutan Välj databasägare. Mer information om hur du skapar en ny databas finns i Skapa en databas.

  6. I Object Explorer väljer du plustecknet för att expandera mappen Databases.

  7. Högerklicka på databasen du skapade, peka på Uppgifteroch välj Hantera databaskryptering.

    Följande alternativ är tillgängliga i dialogrutan Hantera databaskryptering.

    krypteringsalgoritm
    Visar eller anger vilken algoritm som ska användas för databaskryptering. AES128 är standardalgoritmen. Det här fältet får inte vara tomt. Mer information om krypteringsalgoritmer finns i Välj en krypteringsalgoritm.

    Använd servercertifikat
    Anger att krypteringen ska skyddas av ett certifikat. Välj en i listan. Om du inte har behörigheten VIEW DEFINITION på servercertifikat är listan tom. Om du väljer en krypteringsmetod för certifikat kan det här värdet inte vara tomt. Mer information om certifikat finns i SQL Server-certifikat och asymmetriska nycklar.

    Använd serverasymmetrisk nyckel
    Anger att krypteringen ska skyddas av en asymmetrisk nyckel. Endast tillgängliga asymmetriska nycklar visas. Endast en asymmetrisk nyckel som skyddas av en EKM-modul kan kryptera en databas med hjälp av TDE.

    ange databaskryptering på
    Ändrar databasen för att aktivera (markerad) eller inaktivera (avmarkerad) TDE.

  8. När du är klar väljer du OK.

Använd Transact-SQL

  1. I Object Exploreransluter du till en instans av databasmotorn.

  2. I standardfältet väljer du Ny fråga.

  3. Kopiera och klistra in följande exempel i frågefönstret och välj Kör.

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

Mer information finns i:

Flytta en databas som skyddas av transparent datakryptering

Följande procedurer visar hur du flyttar en databas som skyddas av TDE med hjälp av SQL Server Management Studio och med hjälp av Transact-SQL.

Använda SQL Server Management Studio

  1. Högerklicka på den databas som du krypterade tidigare i Object Explorer, peka på Uppgifter och välj Koppla från....

    Följande alternativ är tillgängliga i dialogrutan Koppla loss databas.

    Databaser att koppla från
    Visar en lista över de databaser som ska kopplas från.

    databasnamn
    Visar namnet på databasen som ska kopplas från.

    ta bort anslutningar
    Koppla från anslutningar till den angivna databasen.

Not

Du kan inte koppla från en databas med aktiva anslutningar.

Uppdatera statistik
Som standard behåller åtgärden frånkoppling all inaktuell optimeringsstatistik när databasen kopplas från. om du vill uppdatera den befintliga optimeringsstatistiken markerar du den här kryssrutan.

Behåll Full-Text kataloger
Som standardinställning behåller avskiljningsåtgärden alla fulltextkataloger som är associerade med databasen. Ta bort dem genom att avmarkera kryssrutan Behåll Full-Text Kataloger. Det här alternativet visas bara när du uppgraderar en databas från SQL Server 2005 (9.x).

status
Visar något av följande tillstånd: Klar eller Inte redo.

Meddelande
Kolumnen Message kan visa information om databasen enligt följande:

  • När en databas är involverad i replikering, är StatusInte redo och kolumnen Meddelande visar Databas replikerad.

  • När en databas har en eller flera aktiva anslutningar är StatusInte redo och kolumnen Meddelande visar <number_of_active_connections>Aktiva anslutningar – till exempel: 1 Aktiva anslutningar. Innan du kan koppla från databasen måste du koppla från alla aktiva anslutningar genom att välja Ta bort anslutningar.

Om du vill få mer information om ett meddelande väljer du den hyperlänkade texten för att öppna Aktivitetsövervakaren.

  1. Välj OK.

  2. Använd Utforskaren i Windows och flytta eller kopiera databasfilerna från källservern till samma plats på målservern.

  3. Använd Utforskaren i Windows och flytta eller kopiera säkerhetskopian av servercertifikatet och den privata nyckelfilen från källservern till samma plats på målservern.

  4. Skapa en databashuvudnyckel på målinstansen av SQL Server. Mer information finns i Använda Transact-SQL- senare i den här artikeln.

  5. Återskapa servercertifikatet med hjälp av den ursprungliga säkerhetskopieringsfilen för servercertifikatet. Mer information finns i Använda Transact-SQL- senare i den här artikeln.

  6. Högerklicka på mappen Databases i Object Explorer i SQL Server Management Studio och välj Bifoga....

  7. I dialogrutan Koppla databaser går du till Databaser för att kopplaoch väljer Lägg till.

  8. I dialogrutan Leta upp databasfiler –server_name väljer du den databasfil som ska kopplas till den nya servern och väljer OK.

    Följande alternativ är tillgängliga i dialogrutan Bifoga databaser.

    databaser som ska kopplas
    Visar information om de valda databaserna.

    <ingen kolumnrubrik>
    Visar en ikon som anger status för kopplingsoperationen. Möjliga ikoner beskrivs i beskrivningen Status.

    MDF-filens plats
    Visar sökvägen och filnamnet för den valda MDF-filen.

    Databasnamn
    Visar namnet på databasen.

    Bifoga som
    Du kan också ange ett annat namn för databasen som ska bifogas som.

    ägare
    Innehåller en listruta med möjliga databasägare som du kan välja en annan ägare från.

    status
    Visar databasens status enligt följande tabell.

Ikon Statustext Beskrivning
(Ingen ikon) (Ingen text) Kopplingsoperationen har inte påbörjats eller kanske är i vänteläge för det här objektet. Detta är standardvärdet när dialogrutan öppnas.
Grön, högerriktad triangel Pågår Fästoperationen startades men den är inte slutförd.
Grön kryssmarkering Framgång Objektet har bifogats framgångsrikt.
Röd cirkel som innehåller ett vitt kors Fel En kopplingsoperation stötte på ett fel och slutfördes inte.
Cirkel som innehåller två svarta kvadranter (till vänster och höger) och två vita kvadranter (överst och nederkant) Stoppat Det gick inte att slutföra åtgärden eftersom användaren avbröt åtgärden.
Cirkel som innehåller en böjd pil som pekar motsols Återställd Anslutningen lyckades men återkallades på grund av ett fel under anslutningen av ett annat objekt.

Meddelande
Visar antingen ett tomt meddelande eller hyperlänken "Filen hittades inte".

Lägg till
Hitta nödvändiga huvuddatabasfiler. När användaren väljer en .mdf-fil fylls tillämplig information automatiskt i respektive fält i databasen på som ska bifogas till rutnätet.

Ta bort
Tar bort den markerade filen från -databaserna för att bifoga till-rutnätet.

<database_name>databasinformationen
Visar namnen på de filer som ska bifogas. Om du vill verifiera eller ändra sökvägen till en fil väljer du knappen Bläddra (...).

Notera

Om det inte finns någon fil visas kolumnen Message "Hittades inte". Om en loggfil inte hittas finns den i en annan katalog eller har tagits bort. Du måste antingen uppdatera filsökvägen i databasinformation tabellen för att peka på korrekt plats eller ta bort loggfilen från tabellen. Om en .ndf-datafil inte hittas måste du uppdatera sökvägen i rutnätet för att peka på rätt plats.

ursprungligt filnamn
Visar namnet på den bifogade filen som tillhör databasen.

filtyp
Anger filtypen, Dataeller Log.

Aktuell Filsökväg
Visar sökvägen till den valda databasfilen. Sökvägen kan redigeras manuellt.

Meddelande
Visar antingen ett tomt meddelande eller en hyperlänkFilen hittades inte.

Använd Transact-SQL

  1. I Object Exploreransluter du till en instans av databasmotorn.

  2. I standardfältet väljer du Ny fråga.

  3. Kopiera och klistra in följande exempel i frågefönstret och välj Kör.

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

Mer information finns i: