Spostare un database protetto da TDE in un'altra istanza di SQL ServerMove a TDE Protected Database to Another SQL Server

In questo argomento viene descritto come proteggere un database tramite TDE (Transparent Data Encryption) e spostare il database in un'altra istanza di SQL ServerSQL Server tramite SQL Server Management StudioSQL Server Management Studio o Transact-SQLTransact-SQL.This topic describes how to to protect a database by using transparent data encryption (TDE), and then move the database to another instance of SQL ServerSQL Server by using SQL Server Management StudioSQL Server Management Studio or Transact-SQLTransact-SQL. TDE consente di eseguire la crittografia e la decrittografia I/O in tempo reale dei file di dati e di log.TDE performs real-time I/O encryption and decryption of the data and log files. Per la crittografia viene usata una chiave di crittografia del database (DEK), archiviata nel record di avvio del database affinché sia disponibile durante le operazioni di recupero.The encryption uses a database encryption key (DEK), which is stored in the database boot record for availability during recovery. La chiave DEK è una chiave simmetrica protetta tramite un certificato archiviato nel database master del server o una chiave asimmetrica protetta da un modulo EKM.The DEK is a symmetric key secured by using a certificate stored in the master database of the server or an asymmetric key protected by an EKM module.

Contenuto dell'argomentoIn This Topic

Prima di iniziare Before You Begin

Limitazioni e restrizioni Limitations and Restrictions

  • Quando si sposta il database protetto con TDE, è necessario spostare anche la chiave asimmetrica o il certificato usato per aprire la chiave di decrittografia.When moving a TDE protected database, you must also move the certificate or asymmetric key that is used to open the DEK. La chiave asimmetrica o il certificato deve essere installato nel database master del server di destinazione in modo che in SQL ServerSQL Server sia possibile accedere ai file del database.The certificate or asymmetric key must be installed in the master database of the destination server, so that SQL ServerSQL Server can access the database files. Per altre informazioni sulla crittografia trasparente del database, vedere Transparent Data Encryption (TDE).For more information, see Transparent Data Encryption (TDE).

  • Ai fini del recupero del certificato, è necessario mantenere copie sia del file del certificato sia del file della chiave privata.You must retain copies of both the certificate file and the private key file in order to recover the certificate. La password per la chiave primaria non deve essere uguale a quella della chiave master del database.The password for the private key does not have to be the same as the database master key password.

  • SQL ServerSQL Server archivia i file creati qui in C:\Programmi\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\DATA . stores the files created here in C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\DATA by default. I nomi e i percorsi dei file possono essere diversi.Your file names and locations might be different.

Sicurezza Security

Autorizzazioni Permissions

  • È necessaria l'autorizzazione CONTROL DATABASE per il database master per creare la chiave master del database.Requires CONTROL DATABASE permission on the master database to create the database master key.

  • È necessaria l'autorizzazione CREATE CERTIFICATE per il database master per creare il certificato che consente di proteggere la chiave di decrittografia.Requires CREATE CERTIFICATE permission on the master database to create the certificate that protects the DEK.

  • Sono necessarie l'autorizzazione CONTROL DATABASE per il database crittografato e l'autorizzazione VIEW DEFINITION per la chiave asimmetrica o il certificato usato per crittografare la chiave di crittografia del database.Requires CONTROL DATABASE permission on the encrypted database and VIEW DEFINITION permission on the certificate or asymmetric key that is used to encrypt the database encryption key.

Per creare un database protetto con TDE To create a database protected by transparent data encryption

Utilizzo di SQL Server Management Studio Using SQL Server Management Studio

  1. Creare una chiave master del database e il certificato nel database master .Create a database master key and certificate in the master database. Per altre informazioni, vedere Uso di Transact-SQL di seguito.For more information, see Using Transact-SQL below.

  2. Creare un backup del certificato del server nel database master .Create a backup of the server certificate in the master database. Per altre informazioni, vedere Uso di Transact-SQL di seguito.For more information, see Using Transact-SQL below.

  3. In Esplora oggetti fare clic con il pulsante destro del mouse sulla cartella Database e selezionare Nuovo database.In Object Explorer, right-click the Databases folder and select New Database.

  4. Nella finestra di dialogo Nuovo database digitare il nome del nuovo database nella casella Nome database .In the New Database dialog box, in the Database name box, enter the name of the new database.

  5. Nella casella Proprietario digitare il nome del proprietario del nuovo database.In the Owner box, enter the name of the new database's owner. In alternativa, fare clic sui puntini di sospensione (...) per aprire la finestra di dialogo Seleziona proprietario database .Alternately, click the ellipsis (…) to open the Select Database Owner dialog box. Per altre informazioni sulla creazione di un nuovo database, vedere Create a Database.For more information on creating a new database, see Create a Database.

  6. In Esplora oggetti fare clic sul segno più per espandere la cartella Database .In Object Explorer, click the plus sign to expand the Databases folder.

  7. Fare clic con il pulsante destro del mouse sul database creato, scegliere Attivitàe quindi fare clic su Gestione crittografia del database.Right-click the database you created, point to Tasks, and select Manage Database Encryption.

    Nella finestra di dialogo Gestione crittografia del database sono disponibili le opzioni indicate di seguito.The following options are available on the Manage Database Encryption dialog box.

    Algoritmo di crittografiaEncryption Algorithm
    Visualizza o imposta l'algoritmo da usare per la crittografia del database.Displays or sets the algorithm to use for database encryption. L'algoritmo predefinito èAES128 .AES128 is the default algorithm. Il campo non può essere vuoto.This field cannot be blank. Per altre informazioni sugli algoritmi di crittografia, vedere Choose an Encryption Algorithm.For more information on encryption algorithms, see Choose an Encryption Algorithm.

    Usa certificato serverUse server certificate
    Imposta la sicurezza della crittografia mediante un certificato.Sets the encryption to be secured by a certificate. Selezionarne uno dall'elenco.Select one from the list. Se non si ha l'autorizzazione VIEW DEFINITION per i certificati del server, l'elenco sarà vuoto.If you do not have the VIEW DEFINITION permission on server certificates, this list will be empty. Se viene selezionato un metodo certificato di crittografia, il valore non può essere vuoto.If a certificate method of encryption is selected, this value cannot be empty. Per altre informazioni sui certificati, vedere SQL Server Certificates and Asymmetric Keys.For more information about certificates, see SQL Server Certificates and Asymmetric Keys.

    Usa chiave asimmetrica serverUse server asymmetric key
    Imposta la sicurezza della crittografia mediante una chiave asimmetrica.Sets the encryption to be secured by an asymmetric key. Vengono visualizzate solo le chiavi asimmetriche disponibili.Only available asymmetric keys are displayed. Solo una chiave asimmetrica protetta da un modulo EKM può crittografare un database tramite Transparent Data Encryption.Only an asymmetric key protected by an EKM module can encrypt a database using TDE.

    Attiva crittografia del databaseSet Database Encryption On
    Modifica il database per abilitare (se selezionata) o disabilitare la funzionalità TDE (se deselezionata).Alters the database to turn on (checked) or turn off (unchecked) TDE.

  8. Al termine, fare clic su OK.When finished, click OK.

Uso di Transact-SQL Using Transact-SQL

  1. In Esplora oggetticonnettersi a un'istanza del Motore di databaseDatabase Engine.In Object Explorer, connect to an instance of Motore di databaseDatabase Engine.

  2. Sulla barra Standard fare clic su Nuova query.On the Standard bar, click New Query.

  3. Copiare e incollare l'esempio seguente nella finestra Query, quindi fare clic su Esegui.Copy and paste the following example into the query window and click Execute.

    -- 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\MSSQL13.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  
    

    Per altre informazioni, vedere:For more information, see:

Per spostare un database To move a database

Utilizzo di SQL Server Management Studio Using SQL Server Management Studio

  1. In Esplora oggetti fare clic con il pulsante destro del mouse sul database crittografato in precedenza, scegliere Attività e fare clic su Scollega….In Object Explorer, right-click the database you encrypted above, point to Tasks and select Detach….

    Nella finestra di dialogo Scollega database sono disponibili le opzioni seguenti.The following options are available in the Detach Database dialog box.

    Database da scollegareDatabases to detach
    Consente di visualizzare i database da scollegare.Lists the databases to detach.

    Database NameDatabase Name
    Consente di visualizzare il nome del database da scollegare.Displays the name of the database to be detached.

    Interrompi connessioniDrop Connections
    Consente di interrompere le connessioni al database specificato.Disconnect connections to the specified database.

    Nota

    Non è possibile scollegare un database con connessioni attive.You cannot detach a database with active connections.

    Aggiorna statisticheUpdate Statistics
    Per impostazione predefinita, con l'operazione di scollegamento è possibile mantenere eventuali statistiche di ottimizzazione non aggiornate prima di scollegare il database. Per aggiornare le statistiche di ottimizzazione esistenti, fare clic su questa casella di controllo.By default, the detach operation retains any out-of-date optimization statistics when detaching the database; to update the existing optimization statistics, click this check box.

    Mantieni cataloghi full-textKeep Full-Text Catalogs
    Per impostazione predefinita, con l'operazione di scollegamento è possibile mantenere eventuali cataloghi full-text associati al database.By default, the detach operation keeps any full-text catalogs that are associated with the database. Per rimuoverli, deselezionare la casella di controllo Mantieni cataloghi full-text .To remove them, clear the Keep Full-Text Catalogs check box. Questa opzione è visualizzata solo quando si aggiorna un database da SQL Server 2005SQL Server 2005.This option appears only when you are upgrading a database from SQL Server 2005SQL Server 2005.

    StatoStatus
    Consente di visualizzare uno degli stati seguenti: Pronto o Non pronto.Displays one of the following states: Ready or Not ready.

    MessageMessage
    Nella colonna Messaggio possono essere visualizzate informazioni sul database simili alle seguenti:The Message column may display information about the database, as follows:

    • Quando un database è coinvolto nella replica, lo Stato è Non pronto e nella colonna Messaggio viene visualizzato Database replicato.When a database is involved with replication, the Status is Not ready and the Message column displays Database replicated.

    • Quando un database ha una o più connessioni attive, il valore di Stato è Non pronto e la colonna Messaggio visualizza Connessioni attive: , ad esempio Connessioni attive: 1.When a database has one or more active connections, the Status is Not ready and the Message column displays Active connection(s) — for example: 1 Active connection(s). Prima di poter scollegare il database è necessario disconnettere tutte le connessioni attive selezionando Interrompi connessioni.Before you can detach the database, you need to disconnect any active connections by selecting Drop Connections.

      Per ottenere ulteriori informazioni su un messaggio, fare clic sul testo del collegamento ipertestuale per aprire Monitoraggio attività.To obtain more information about a message, click the hyperlinked text to open Activity Monitor.

  2. Scegliere OK.Click OK.

  3. Usando Esplora risorse spostare o copiare i file del database dal server di origine nello stesso percorso nel server di destinazione.Using Windows Explorer, move or copy the database files from the source server to the same location on the destination server.

  4. Usando Esplora risorse spostare o copiare il backup dei file del certificato del server e della chiave privata dal server di origine nello stesso percorso nel server di destinazione.Using Windows Explorer, 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.

  5. Creare una chiave master del database nell'istanza di destinazione di SQL ServerSQL Server.Create a database master key on the destination instance of SQL ServerSQL Server. Per altre informazioni, vedere Uso di Transact-SQL di seguito.For more information, see Using Transact-SQL below.

  6. Ricreare il certificato del server usando il file di backup del certificato del server originale.Recreate the server certificate by using the original server certificate backup file. Per altre informazioni, vedere Uso di Transact-SQL di seguito.For more information, see Using Transact-SQL below.

  7. In Esplora oggetti in SQL Server Management StudioSQL Server Management Studio, fare clic con il pulsante destro del mouse sulla cartella Database e selezionare Collega….In Object Explorer in SQL Server Management StudioSQL Server Management Studio, right-click the Databases folder and select Attach….

  8. Nella finestra di dialogo Collega database , in Database da collegarefare clic su Aggiungi.In the Attach Databases dialog box, under Databases to attach, click Add.

  9. Nella finestra di dialogo Individua file di database -server_name selezionare il file di database da collegare al nuovo server e fare clic su OK.In the Locate Database Files –server_name dialog box, select the database file to attach to the new server and click OK.

    Nella finestra di dialogo Collega database sono disponibili le opzioni seguenti.The following options are available in the Attach Databases dialog box.

    Database da collegareDatabases to attach
    Consente di visualizzare informazioni sui database selezionati.Displays information about the selected databases.

    <nessuna intestazione di colonna><no column header>
    Consente di visualizzare un'icona che indica lo stato dell'operazione di collegamento.Displays an icon indicating the status of the attach operation. Le icone possibili sono illustrate di seguito nella descrizione di Stato .The possible icons are described in the Status description, below).

    Percorso file MDFMDF File Location
    Consente di visualizzare il percorso e il nome del file MDF selezionato.Displays the path and file name of the selected MDF file.

    Database NameDatabase Name
    Consente di visualizzare il nome del database.Displays the name of the database.

    Collega comeAttach As
    Facoltativamente, è possibile specificare un nome diverso per il database da collegare.Optionally, specifies a different name for the database to attach as.

    ProprietarioOwner
    Consente di visualizzare un elenco a discesa di possibili proprietari del database in cui è possibile selezionare un proprietario diverso.Provides a drop-down list of possible database owners from which you can optionally select a different owner.

    StatoStatus
    Consente di visualizzare lo stato del base in base alla tabella seguente.Displays the status of the database according to the following table.

    IconaIcon Testo StatoStatus text DescrizioneDescription
    (Nessuna icona)(No icon) (Nessun testo)(No text) L'operazione di collegamento non è stata avviata o può essere sospesa per questo oggetto.Attach operation has not been started or may be pending for this object. È il valore predefinito all'apertura della finestra di dialogo.This is the default when the dialog is opened.
    Triangolo verde che punta a destraGreen, right-pointing triangle In corsoIn progress L'operazione di collegamento è stata avviata ma non ancora completata.Attach operation has been started but it is not complete.
    Segno di spunta verdeGreen check mark Operazione completataSuccess L'oggetto è stato collegato.The object has been attached successfully.
    Cerchio rosso con croce biancaRed circle containing a white cross ErroreError Si è verificato un errore durante l'operazione. Il collegamento non è stato completato.Attach operation encountered an error and did not complete successfully.
    Cerchio con due quadranti neri a destra e a sinistra e due quadranti bianchi in alto e in bassoCircle containing two black quadrants (on left and right) and two white quadrants (on top and bottom) StoppedStopped L'operazione di collegamento non è stata completata perché l'utente ne ha arrestato l'esecuzione.Attach operation was not completed successfully because the user stopped the operation.
    Cerchio con freccia curva che punta in senso antiorario.Circle containing a curved arrow pointing counter-clockwise È stato eseguito il rollbackRolled Back L'operazione di collegamento è stata completata ma ne è stato eseguito il rollback a causa di un errore durante il collegamento di un altro oggetto.Attach operation was successful but it has been rolled back due to an error during attachment of another object.

    MessageMessage
    Non viene visualizzato alcun messaggio oppure viene visualizzato il collegamento ipertestuale "Impossibile trovare il file".Displays either a blank message or a "File not found" hyperlink.

    AggiungiAdd
    Consente di individuare i file principali del database necessari.Find the necessary main database files. Se l'utente seleziona un file con estensione mdf, le informazioni appropriate vengono inserite automaticamente nei rispettivi campi della griglia Database da collegare .When the user selects an .mdf file, applicable information is automatically filled in the respective fields of the Databases to attach grid.

    RimuoviRemove
    Consente di rimuovere il file selezionato dalla griglia Database da collegare .Removes the selected file from the Databases to attach grid.

    " " dettagli database" " database details
    Consente di visualizzare i nomi dei file da collegare.Displays the names of the files to be attached. Per verificare o modificare il percorso di un file, fare clic sul pulsante Sfoglia ().To verify or change the pathname of a file, click the Browse button ().

    Nota

    Se il file non esiste, nella colonna Messaggio verrà visualizzato il testo "File non trovato".If a file does not exist, the Message column displays "Not found." Se non rilevato, un file di log può trovarsi in un'altra directory o essere stato eliminato.If a log file is not found, it exists in another directory or has been deleted. È necessario aggiornare il percorso del file nella griglia Dettagli database in modo che indichi la posizione corretta oppure rimuovere il file di log dalla griglia.You need to either update the file path in the database details grid to point to the correct location or remove the log file from the grid. Se non viene rilevato un file di dati con estensione ndf, è necessario aggiornare il percorso nella griglia in modo che indichi la posizione corretta.If an .ndf data file is not found, you need to update its path in the grid to point to the correct location.

    Nome file originaleOriginal File Name
    Consente di visualizzare il nome del file collegato appartenente al database.Displays the name of the attached file belonging to the database.

    Tipo di fileFile Type
    Indica il tipo di file, ovvero Dati o Log.Indicates the type of file, Data or Log.

    Percorso file correnteCurrent File Path
    Consente di visualizzare il percorso del file di database selezionato.Displays the path to the selected database file. Il percorso può essere modificato manualmente.The path can be edited manually.

    MessageMessage
    Non viene visualizzato alcun messaggio oppure viene visualizzato il collegamento ipertestualeImpossibile trovare il file.Displays either a blank message or a "File not found" hyperlink.

Uso di Transact-SQL Using Transact-SQL

  1. In Esplora oggetticonnettersi a un'istanza del Motore di databaseDatabase Engine.In Object Explorer, connect to an instance of Motore di databaseDatabase Engine.

  2. Sulla barra Standard fare clic su Nuova query.On the Standard bar, click New Query.

  3. Copiare e incollare l'esempio seguente nella finestra Query, quindi fare clic su Esegui.Copy and paste the following example into the query window and click Execute.

    -- 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\MSSQL13.MSSQLSERVER\MSSQL\DATA\CustRecords.mdf' ),  
    ( FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\DATA\CustRecords_log.LDF' )  
    FOR ATTACH ;  
    GO  
    

    Per altre informazioni, vedere:For more information, see:

Vedere ancheSee Also

Collegamento e scollegamento di un database (SQL Server) Database Detach and Attach (SQL Server)
Transparent Data Encryption con il database SQL di Azure Transparent Data Encryption with Azure SQL Database