Mover um banco de dados protegido por TDE para outro SQL ServerMove a TDE Protected Database to Another SQL Server

APLICA-SE A: simSQL Server nãoBanco de Dados SQL do Azure nãoAzure Synapse Analytics (SQL DW) nãoParallel Data Warehouse APPLIES TO: yesSQL Server noAzure SQL Database noAzure Synapse Analytics (SQL DW) noParallel Data Warehouse

Este tópico descreve como proteger um banco de dados usando a TDE (Transparent Data Encryption) e, em seguida, mover o banco de dados para outra instância do SQL ServerSQL Server usando SQL Server Management StudioSQL Server Management Studio ou Transact-SQLTransact-SQL.This topic describes how 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. A TDE realiza a criptografia e a descriptografia de E/S em tempo real dos arquivos de dados e de log.TDE performs real-time I/O encryption and decryption of the data and log files. A criptografia usa uma DEK (chave de criptografia do banco de dados), que é armazenada no registro de inicialização do banco de dados para disponibilidade durante a recuperação.The encryption uses a database encryption key (DEK), which is stored in the database boot record for availability during recovery. A DEK é uma chave simétrica protegida por um certificado armazenado no banco de dados mestre do servidor ou uma chave assimétrica protegida por um módulo 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.

Limitações e restriçõesLimitations and Restrictions

  • Ao mover um banco de dados protegido por TDE, é necessário também mover o certificado ou a chave assimétrica que é usada para abrir a DEK.When moving a TDE protected database, you must also move the certificate or asymmetric key that is used to open the DEK. O certificado ou a chave assimétrica devem ser instalados no banco de dados mestre do servidor de destino, de forma que o SQL ServerSQL Server possa acessar os arquivos do banco de dados.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. Para obter mais informações, veja TDE (Transparent Data Encryption).For more information, see Transparent Data Encryption (TDE).

  • Você deve reter cópias do arquivo de certificado e do arquivo de chave privada para poder recuperar o certificado.You must retain copies of both the certificate file and the private key file in order to recover the certificate. A senha da chave privada não precisa ser igual à senha da chave mestra do banco de dados.The password for the private key does not have to be the same as the database master key password.

  • SQL ServerSQL Server armazena os arquivos criados aqui em C:\Arquivos de Programas\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\DATA por padrão.stores the files created here in C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\DATA by default. Os nomes e locais dos seus arquivos poderão ser diferentes.Your file names and locations might be different.

PermissõesPermissions

  • Requer a permissão CONTROL DATABASE no banco de dados mestre para criar a chave mestra de banco de dados.Requires CONTROL DATABASE permission on the master database to create the database master key.

  • Requer a permissão CREATE CERTIFICATE no banco de dados mestre para criar o certificado que protege a DEK.Requires CREATE CERTIFICATE permission on the master database to create the certificate that protects the DEK.

  • Requer a permissão CONTROL DATABASE no banco de dados e a permissão VIEW DEFINITION na chave assimétrica ou no certificado usado para criptografar a chave de criptografia do banco de dados.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.

Para criar um banco de dados protegido por criptografia de dados transparenteTo create a database protected by transparent data encryption

Os procedimentos a seguir mostram a que você precisa criar um banco de dados protegido por TDE usando o SQL Server Management Studio e usando o Transact-SQL.The following procedures show you have to create a database protected by TDE using SQL Server Management Studio and by using Transact-SQL.

Usando o SQL Server Management StudioUsing SQL Server Management Studio

  1. Crie uma chave mestra e um certificado de banco de dados no banco de dados mestre .Create a database master key and certificate in the master database. Para obter mais informações, veja Usando o Transact-SQL abaixo.For more information, see Using Transact-SQL below.

  2. Crie um backup do certificado do servidor no banco de dados mestre .Create a backup of the server certificate in the master database. Para obter mais informações, veja Usando o Transact-SQL abaixo.For more information, see Using Transact-SQL below.

  3. No Pesquisador de Objetos, clique com o botão direito do mouse na pasta Bancos de Dados e selecione Novo Banco de Dados.In Object Explorer, right-click the Databases folder and select New Database.

  4. Na caixa de diálogo Novo Banco de Dados , na caixa Nome do banco de dados , digite o nome do novo banco de dados.In the New Database dialog box, in the Database name box, enter the name of the new database.

  5. Na caixa de diálogo Proprietário , digite o nome do proprietário do novo banco de dados.In the Owner box, enter the name of the new database's owner. Como alternativa, clique nas reticências (...) para abrir a caixa de diálogo Selecionar Proprietário do Banco de Dados.Alternately, click the ellipsis (...) to open the Select Database Owner dialog box. Para obter mais informações sobre a criação de um novo banco de dados, consulte Create a Database.For more information on creating a new database, see Create a Database.

  6. No Pesquisador de Objetos, clique no sinal de mais para expandir a pasta Bancos de Dados .In Object Explorer, click the plus sign to expand the Databases folder.

  7. Clique com o botão direito do mouse no banco de dados que você criou, aponte para Tarefase selecione Gerenciar Criptografia de Banco de Dados.Right-click the database you created, point to Tasks, and select Manage Database Encryption.

    As opções a seguir estão disponíveis na caixa de diálogo Gerenciar Criptografia de Banco de Dados .The following options are available on the Manage Database Encryption dialog box.

    Algoritmo de CriptografiaEncryption Algorithm
    Exibe ou define o algoritmo para uso na criptografia de banco de dados.Displays or sets the algorithm to use for database encryption. AES128 é o algoritmo padrão.AES128 is the default algorithm. Este campo não pode ficar em branco.This field cannot be blank. Para obter mais informações sobre algoritmos de criptografia, consulte Choose an Encryption Algorithm.For more information on encryption algorithms, see Choose an Encryption Algorithm.

    Usar certificado de servidorUse server certificate
    Define a criptografia a ser protegida por um certificado.Sets the encryption to be secured by a certificate. Selecione uma opção da lista.Select one from the list. Se você não tiver a permissão VIEW DEFINITION nos certificados do servidor, essa lista estará vazia.If you do not have the VIEW DEFINITION permission on server certificates, this list will be empty. Se um método de certificado de criptografia for selecionado, esse valor não poderá ficar em branco.If a certificate method of encryption is selected, this value cannot be empty. Para obter mais informações sobre certificados, consulte SQL Server Certificates and Asymmetric Keys.For more information about certificates, see SQL Server Certificates and Asymmetric Keys.

    Usar chave assimétrica do servidorUse server asymmetric key
    Define a criptografia a ser protegida por uma chave assimétrica.Sets the encryption to be secured by an asymmetric key. Somente as chaves assimétricas disponíveis são exibidas.Only available asymmetric keys are displayed. Somente uma chave assimétrica protegida por um módulo EKM pode criptografar um banco de dados que usa a TDE.Only an asymmetric key protected by an EKM module can encrypt a database using TDE.

    Definir criptografia de banco de dados como ativaSet Database Encryption On
    Altera o banco de dados para ativar (marcado) ou desativar (desmarcado) a TDE.Alters the database to turn on (checked) or turn off (unchecked) TDE.

  8. Quando terminar, clique em OK.When finished, click OK.

Usando o Transact-SQLUsing Transact-SQL

  1. No Pesquisador de Objetos, conecte-se a uma instância do Mecanismo de Banco de DadosDatabase Engine.In Object Explorer, connect to an instance of Mecanismo de Banco de DadosDatabase Engine.

  2. Na barra Padrão, clique em Nova Consulta.On the Standard bar, click New Query.

  3. Copie e cole o exemplo a seguir na janela de consulta e clique em Executar.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  
    

Para obter mais informações, consulte:For more information, see:

Para mover um banco de dados protegido por Transparent Data EncryptionTo move a database protected by transparent data encryption

Os procedimentos a seguir mostram a que você precisa mover um banco de dados protegido por TDE usando o SQL Server Management Studio e usando o Transact-SQL.The following procedures show you have to move a database protected by TDE using SQL Server Management Studio and by using Transact-SQL.

Usando o SQL Server Management StudioUsing SQL Server Management Studio

  1. No Pesquisador de Objetos, clique com o botão direito do mouse no banco de dados que você criptografou acima, aponte para Tarefas e selecione Desanexar... .In Object Explorer, right-click the database you encrypted above, point to Tasks and select Detach....

    As opções a seguir estão disponíveis na caixa de diálogo Desanexar Banco de Dados .The following options are available in the Detach Database dialog box.

    Bancos de dados a serem desanexadosDatabases to detach
    Lista os bancos de dados a serem desanexadosLists the databases to detach.

    Database NameDatabase Name
    Exibe o nome do banco de dados a ser desanexado.Displays the name of the database to be detached.

    Cancelar ConexõesDrop Connections
    Cancelar conexões com o banco de dados especificado.Disconnect connections to the specified database.

    Observação

    Você não pode desanexar um banco de dados com conexões ativas.You cannot detach a database with active connections.

    Atualização de EstatísticasUpdate Statistics
    Por padrão, a operação desanexar retém qualquer estatística de otimização desatualizada ao desanexar o banco de dados; para atualizar as estatísticas de otimização existentes, clique nesta caixa de seleção.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.

    Manter Catálogos de Texto CompletoKeep Full-Text Catalogs
    Por padrão, a operação desanexar mantém qualquer catálogo de texto completo que esteja associado ao banco de dados.By default, the detach operation keeps any full-text catalogs that are associated with the database. Para removê-los, desmarque a caixa de seleção Manter Catálogos de Texto Completo .To remove them, clear the Keep Full-Text Catalogs check box. Essa opção é exibida apenas quando você está atualizando um banco de dados do SQL Server 2005 (9.x)SQL Server 2005 (9.x).This option appears only when you are upgrading a database from SQL Server 2005 (9.x)SQL Server 2005 (9.x).

    StatusStatus
    Exibe um dos estados a seguir: Pronto ou Não pronto.Displays one of the following states: Ready or Not ready.

    MensagemMessage
    A coluna Mensagem pode exibir informações sobre o banco de dados, da seguinte forma:The Message column may display information about the database, as follows:

    • Quando um banco de dados estiver envolvido com replicação, o Status será Não pronto e a coluna Mensagem exibirá Banco de Dados replicado.When a database is involved with replication, the Status is Not ready and the Message column displays Database replicated.

    • Quando um banco de dados tiver uma ou mais conexões ativas, o Status será Não está pronto e a coluna Mensagem exibirá <número_de_conexões_ativas> Conexões ativas – por exemplo: 1 Conexão ativa.When a database has one or more active connections, the Status is Not ready and the Message column displays <number_of_active_connections>Active connection(s) - for example: 1 Active connection(s). Antes de desanexar o banco de dados, você deverá cancelar qualquer conexão ativa selecionando Cancelar Conexões.Before you can detach the database, you need to disconnect any active connections by selecting Drop Connections.

    Para obter mais informações sobre a mensagem, clique o texto com hiperlink para abrir o Monitor de atividades.To obtain more information about a message, click the hyperlinked text to open Activity Monitor.

  2. Clique em OK.Click OK.

  3. Usando o Windows Explorer, mova ou copie os arquivos de banco de dados do servidor de origem para o mesmo local no servidor de destino.Using Windows Explorer, move or copy the database files from the source server to the same location on the destination server.

  4. Usando o Windows Explorer, mova ou copie o backup do certificado do servidor e o arquivo de chave privada do servidor de origem para o mesmo local no servidor de destino.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. Crie uma chave mestra de banco de dados na instância de destino do SQL ServerSQL Server.Create a database master key on the destination instance of SQL ServerSQL Server. Para obter mais informações, veja Usando o Transact-SQL abaixo.For more information, see Using Transact-SQL below.

  6. Recrie o certificado do servidor usando o arquivo de backup de certificado do servidor original.Recreate the server certificate by using the original server certificate backup file. Para obter mais informações, veja Usando o Transact-SQL abaixo.For more information, see Using Transact-SQL below.

  7. No Pesquisador de Objetos no SQL Server Management StudioSQL Server Management Studio, clique com o botão direito do mouse na pasta Bancos de Dados e selecione Anexar... .In Object Explorer in SQL Server Management StudioSQL Server Management Studio, right-click the Databases folder and select Attach....

  8. Na caixa de diálogo Anexar Bancos de Dados , em Bancos de dados a serem anexados, clique em Adicionar.In the Attach Databases dialog box, under Databases to attach, click Add.

  9. Na caixa de diálogo Localizar Arquivos de Banco de Dados – server_name, selecione o arquivo de banco de dados a ser anexado ao novo servidor e clique em OK.In the Locate Database Files -server_name dialog box, select the database file to attach to the new server and click OK.

    As opções a seguir estão disponíveis na caixa de diálogo Anexar Bancos de Dados .The following options are available in the Attach Databases dialog box.

    Bancos de dados a serem anexadosDatabases to attach
    Exibe informações sobre os bancos de dados selecionados.Displays information about the selected databases.

    <no column header><no column header>
    Exibe um ícone que indica o status da operação de anexação.Displays an icon indicating the status of the attach operation. Os possíveis ícones são descritos em Status , abaixo).The possible icons are described in the Status description, below).

    Local do Arquivo MDFMDF File Location
    Exibe o caminho e o nome de arquivo do arquivo MDF selecionado.Displays the path and file name of the selected MDF file.

    Database NameDatabase Name
    Exibe o nome do banco de dados.Displays the name of the database.

    Anexar comoAttach As
    Opcionalmente, especifique um nome diferente para o banco de dados anexar como.Optionally, specifies a different name for the database to attach as.

    ProprietárioOwner
    Fornece uma lista suspensa de possíveis proprietários de banco de dados dos quais você pode selecionar um proprietário diferente opcionalmente.Provides a drop-down list of possible database owners from which you can optionally select a different owner.

    StatusStatus
    Exibe o status do banco de dados de acordo com a seguinte tabela.Displays the status of the database according to the following table.

    ÍconeIcon Texto de statusStatus text DescriçãoDescription
    (No icon)(No icon) (Nenhum texto)(No text) A operação de anexação não foi iniciada ou pode estar pendente para esse objeto.Attach operation has not been started or may be pending for this object. Esse é o padrão quando a caixa de diálogo é aberta.This is the default when the dialog is opened.
    Triângulo verde apontando para a direitaGreen, right-pointing triangle Em andamentoIn progress A operação de anexação foi iniciada mas não está completa.Attach operation has been started but it is not complete.
    Sinal de verificação verdeGreen check mark ÊxitoSuccess O objeto foi anexado com êxito.The object has been attached successfully.
    Círculo vermelho contendo uma cruz brancaRed circle containing a white cross ErroError A operação de anexação encontrou um erro e não foi concluída com êxito.Attach operation encountered an error and did not complete successfully.
    Círculo que contém dois quadrantes pretos (à esquerda e à direita) e dois quadrantes brancos (em cima e em baixo)Circle containing two black quadrants (on left and right) and two white quadrants (on top and bottom) Stopped (parado)Stopped A operação de anexação não foi completada com êxito porque o usuário interrompeu a operação.Attach operation was not completed successfully because the user stopped the operation.
    Círculo que contém uma seta curvada que aponta para o sentido anti-horárioCircle containing a curved arrow pointing counter-clockwise RevertidaRolled Back A operação de anexação teve êxito, mas foi revertida devido a um erro ao se anexar outro objeto.Attach operation was successful but it has been rolled back due to an error during attachment of another object.

    MensagemMessage
    Exibe uma mensagem em branco ou um hiperlink "Arquivo não encontrado"Displays either a blank message or a "File not found" hyperlink.

    AdicionarAdd
    Encontrar os arquivos de banco de dados principais necessários.Find the necessary main database files. Quando o usuário selecionar um arquivo .mdf , os respectivos campos são automaticamente preenchidos com informações aplicáveis da grade Bancos de dados a serem anexados .When the user selects an .mdf file, applicable information is automatically filled in the respective fields of the Databases to attach grid.

    RemoverRemove
    Remove o arquivo selecionado da grade Bancos de dados a serem anexados .Removes the selected file from the Databases to attach grid.

    " <database_name> " detalhes do banco de dados" <database_name> " database details
    Exibe os nomes dos arquivos a serem anexados.Displays the names of the files to be attached. Para verificar ou alterar o nome do caminho de um arquivo, clique no botão Procurar ( ... ).To verify or change the pathname of a file, click the Browse button (...).

    Observação

    Se um arquivo não existir, a coluna Mensagem exibe "Não encontrado."If a file does not exist, the Message column displays "Not found." Se um arquivo de log não for encontrado, ele existe em outro diretório ou foi excluído.If a log file is not found, it exists in another directory or has been deleted. Você precisa atualizar o caminho do arquivo na grade detalhes do banco de dados para indicar o local correto ou remover o arquivo de log da grade.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 um arquivo de dados .ndf não for encontrado, você precisará atualizar seu caminho na grade a fim de indicar o local correto.If an .ndf data file is not found, you need to update its path in the grid to point to the correct location.

    Nome do arquivo originalOriginal File Name
    Exibe o nome do arquivo anexado que pertence ao banco de dados.Displays the name of the attached file belonging to the database.

    Tipo de arquivoFile Type
    Indica o tipo de arquivo, Dados ou Log.Indicates the type of file, Data or Log.

    Caminho do arquivo atualCurrent File Path
    Exibe o caminho para o arquivo de banco de dados selecionado.Displays the path to the selected database file. O caminho pode ser editado manualmente.The path can be edited manually.

    MensagemMessage
    Exibe uma mensagem em branco ou um hiperlink “Arquivo não encontrado”.Displays either a blank message or a "File not found" hyperlink.

Usando o Transact-SQLUsing Transact-SQL

  1. No Pesquisador de Objetos, conecte-se a uma instância do Mecanismo de Banco de DadosDatabase Engine.In Object Explorer, connect to an instance of Mecanismo de Banco de DadosDatabase Engine.

  2. Na barra Padrão, clique em Nova Consulta.On the Standard bar, click New Query.

  3. Copie e cole o exemplo a seguir na janela de consulta e clique em Executar.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  
    

Para obter mais informações, consulte:For more information, see:

Consulte TambémSee Also

Anexar e desanexar bancos de dados (SQL Server) Database Detach and Attach (SQL Server)
Transparent Data Encryption com o Banco de Dados SQL do AzureTransparent Data Encryption with Azure SQL Database