Fazer uma cópia consistente transicionalmente de um banco de dados SQL do AzureCopy a transactionally consistent copy of an Azure SQL database

O banco de dados SQL do Azure fornece vários métodos para criar uma cópia transacionalmente consistente de um banco de dados SQL do Azure existente (banco de dados individual) no mesmo servidor ou em um servidor diferente.Azure SQL Database provides several methods for creating a transactionally consistent copy of an existing Azure SQL database (single database) on either the same server or a different server. Você pode copiar um Banco de Dados SQL usando o Portal do Azure, o PowerShell ou o T-SQL.You can copy a SQL database by using the Azure portal, PowerShell, or T-SQL.

Visão geralOverview

Uma cópia do banco de dados é um instantâneo do banco de dados de origem no momento da solicitação de cópia.A database copy is a snapshot of the source database as of the time of the copy request. Você pode selecionar o mesmo servidor ou um servidor diferente.You can select the same server or a different server. Além disso, você pode optar por manter sua camada de serviço e o tamanho da computação ou usar um tamanho de computação diferente dentro da mesma camada de serviço (edição).Also you can choose to keep its service tier and compute size, or use a different compute size within the same service tier (edition). Após a conclusão da cópia, a cópia se tornará um banco de dados independente e totalmente funcional.After the copy is complete, it becomes a fully functional, independent database. Neste ponto, é possível atualizar ou fazer o downgrade para qualquer edição.At this point, you can upgrade or downgrade it to any edition. Os logons, os usuários e as permissões podem ser gerenciados independentemente.The logins, users, and permissions can be managed independently.

Observação

Backups de banco de dados automatizados são usados quando você cria uma cópia de banco de dados.Automated database backups are used when you create a database copy.

Logons na cópia do banco de dadosLogins in the database copy

Quando você copia um banco de dados no mesmo servidor do Banco de Dados SQL, os mesmos logons podem ser usados em ambos os bancos de dados.When you copy a database to the same SQL Database server, the same logins can be used on both databases. A entidade de segurança usada para copiar o banco de dados se tornará o proprietário do banco de dados do banco de dados.The security principal you use to copy the database becomes the database owner on the new database. Todos os usuários do banco de dados, suas permissões e seus identificadores de segurança (SIDs) são copiados para a cópia do banco de dados.All database users, their permissions, and their security identifiers (SIDs) are copied to the database copy.

Quando você copia um banco de dados para um servidor do Banco de Dados SQL diferente, a entidade de segurança no novo servidor torna-se a proprietária do banco de dados no novo banco de dados.When you copy a database to a different SQL Database server, the security principal on the new server becomes the database owner on the new database. Se você usar usuários de banco de dados independente para acesso aos dados, garanta que os bancos de dados primários e secundários sempre tenham as mesmas credenciais de usuário. Portanto, depois que a cópia for concluída, será possível acessá-la imediatamente com as mesmas credenciais.If you use contained database users for data access, ensure that both the primary and secondary databases always have the same user credentials, so that after the copy is complete you can immediately access it with the same credentials.

Se você usar o Azure Active Directory, será possível acabar completamente com a necessidade de gerenciar credenciais na cópia.If you use Azure Active Directory, you can completely eliminate the need for managing credentials in the copy. No entanto, quando você copia o banco de dados para um novo servidor, o acesso baseado em logon geralmente não funciona, porque os logons não existirão no novo servidor.However, when you copy the database to a new server, the login-based access might not work, because the logins do not exist on the new server. Para saber como gerenciar logons quando você copia um banco de dados para um servidor do Banco de Dados SQL diferente, confira How to manage Azure SQL database security after disaster recovery (Como gerenciar a segurança do Banco de Dados SQL do Azure após a recuperação de desastre).To learn about managing logins when you copy a database to a different SQL Database server, see How to manage Azure SQL database security after disaster recovery.

Depois que a cópia for bem-sucedida e antes que outros usuários sejam remapeados, somente o logon que tiver iniciado a cópia, o proprietário do banco de dados, poderá fazer logon no novo banco de dados.After the copying succeeds and before other users are remapped, only the login that initiated the copying, the database owner, can log in to the new database. Para resolver logons após a conclusão da operação de cópia, confira Resolver logons.To resolve logins after the copying operation is complete, see Resolve logins.

Cópia do banco de dados usando o Portal do AzureCopy a database by using the Azure portal

Para copiar um banco de dados usando o Portal do Azure, abra a página do banco de dados e clique em Copiar.To copy a database by using the Azure portal, open the page for your database, and then click Copy.

Cópia do banco de dados

Cópia de banco de dados usando o PowerShellCopy a database by using PowerShell

Observação

Este artigo foi atualizado para usar o novo módulo Az do Azure PowerShell.This article has been updated to use the new Azure PowerShell Az module. Você ainda pode usar o módulo AzureRM, que continuará a receber as correções de bugs até pelo menos dezembro de 2020.You can still use the AzureRM module, which will continue to receive bug fixes until at least December 2020. Para saber mais sobre o novo módulo Az e a compatibilidade com o AzureRM, confira Apresentação do novo módulo Az do Azure PowerShell.To learn more about the new Az module and AzureRM compatibility, see Introducing the new Azure PowerShell Az module. Para obter instruções de instalação do módulo Az, confira Instalar o Azure PowerShell.For Az module installation instructions, see Install Azure PowerShell.

Para copiar um banco de dados usando o PowerShell, use o cmdlet New-AzSqlDatabaseCopy .To copy a database by using PowerShell, use the New-AzSqlDatabaseCopy cmdlet.

New-AzSqlDatabaseCopy -ResourceGroupName "myResourceGroup" `
    -ServerName $sourceserver `
    -DatabaseName "MySampleDatabase" `
    -CopyResourceGroupName "myResourceGroup" `
    -CopyServerName $targetserver `
    -CopyDatabaseName "CopyOfMySampleDatabase"

Para ver um script de exemplo completo, consulte Copiar um banco de dados para um novo servidor.For a complete sample script, see Copy a database to a new server.

Cópia de banco de dados usando o Transact-SQLCopy a database by using Transact-SQL

Faça logon no banco de dados mestre com o logon principal no nível do servidor ou o logon que criou o banco de dados que você deseja copiar.Log in to the master database with the server-level principal login or the login that created the database you want to copy. Para que a cópia do banco de dados seja bem-sucedida, os logons que não forem a entidade de segurança de nível de servidor deverão ser membros da função dbmanager.For database copying to succeed, logins that are not the server-level principal must be members of the dbmanager role. Para saber mais sobre logons e como se conectar ao servidor, confira Gerenciar logons.For more information about logins and connecting to the server, see Manage logins.

Inicie a cópia do banco de dados de origem com a instrução CREATE DATABASE .Start copying the source database with the CREATE DATABASE statement. A execução dessa instrução inicia o processo de cópia do banco de dados.Executing this statement initiates the database copying process. Como a cópia um banco de dados é um processo assíncrono, a instrução CREATE DATABASE retorna antes da conclusão da cópia do banco de dados.Because copying a database is an asynchronous process, the CREATE DATABASE statement returns before the database copying is complete.

Copiar um banco de dados SQL para o mesmo servidorCopy a SQL database to the same server

Faça logon no banco de dados mestre com o logon principal no nível do servidor ou o logon que criou o banco de dados que você deseja copiar.Log in to the master database with the server-level principal login or the login that created the database you want to copy. Para que a cópia do banco de dados seja bem-sucedida, os logons que não forem a entidade de segurança de nível de servidor deverão ser membros da função dbmanager.For database copying to succeed, logins that are not the server-level principal must be members of the dbmanager role.

Esse comando copia o Banco de dados 1 para um novo banco de dados chamado Database2 (Banco de dados 2) no mesmo servidor.This command copies Database1 to a new database named Database2 on the same server. Dependendo do tamanho do banco de dados, a operação de cópia poderá demorar a ser concluída.Depending on the size of your database, the copying operation might take some time to complete.

-- Execute on the master database.
-- Start copying.
CREATE DATABASE Database2 AS COPY OF Database1;

Copiar um banco de dados SQL para um servidor diferenteCopy a SQL database to a different server

Faça logon no banco de dados mestre do servidor de destino, o servidor do Banco de Dados SQL em que o novo banco de dados deve ser criado.Log in to the master database of the destination server, the SQL Database server where the new database is to be created. Use um logon que tenha o mesmo nome e senha do proprietário do banco de dados de origem no servidor do Banco de Dados SQL de origem.Use a login that has the same name and password as the database owner of the source database on the source SQL Database server. O logon no servidor de destino também deve ser membro da função dbmanager ou ser o logon principal no nível de servidor.The login on the destination server must also be a member of the dbmanager role or be the server-level principal login.

Esse comando copia o Database1 no servidor 1- para um novo banco de dados chamado Database2 no servidor 2.This command copies Database1 on server1 to a new database named Database2 on server2. Dependendo do tamanho do banco de dados, a operação de cópia poderá demorar a ser concluída.Depending on the size of your database, the copying operation might take some time to complete.

-- Execute on the master database of the target server (server2)
-- Start copying from Server1 to Server2
CREATE DATABASE Database2 AS COPY OF server1.Database1;

Importante

Os firewalls de servidores devem ser configurados para permitir a conexão de entrada do IP do cliente que emite o comando de cópia T-SQL.Both servers' firewalls must be configured to allow inbound connection from the IP of the client issuing the T-SQL COPY command.

Copiar um banco de dados SQL para uma assinatura diferenteCopy a SQL database to a different subscription

Você pode usar as etapas descritas na seção anterior para copiar seu banco de dados para um servidor de banco de dados SQL em uma assinatura diferente.You can use the steps described in the previous section to copy your database to a SQL Database server in a different subscription. Certifique-se de usar um logon que tenha o mesmo nome e senha que o proprietário do banco de dados de origem e ele é membro da função dbmanager ou é o logon da entidade de segurança no nível do servidor.Make sure you use a login that has the same name and password as the database owner of the source database and it is a member of the dbmanager role or is the server-level principal login.

Observação

O portal do Azure não oferece suporte à cópia para uma assinatura diferente porque o portal chama a API do ARM e usa os certificados de assinatura para acessar os dois servidores envolvidos na replicação geográfica.The Azure portal does not support copy to a different subscription because Portal calls the ARM API and it uses the subscription certificates to access both servers involved in geo-replication.

Monitorar o andamento da operação de cópiaMonitor the progress of the copying operation

Monitore o processo de cópia consultando as exibições sys.databases e sys.dm_database_copies.Monitor the copying process by querying the sys.databases and sys.dm_database_copies views. Enquanto a cópia estiver em andamento, a coluna state_desc da exibição sys.databases para o novo banco de dados é definida como COPYING.While the copying is in progress, the state_desc column of the sys.databases view for the new database is set to COPYING.

  • Se a cópia falhar, a coluna state_desc da exibição sys.databases para o novo banco de dados será definida como SUSPECT.If the copying fails, the state_desc column of the sys.databases view for the new database is set to SUSPECT. Execute a instrução DROP no novo banco de dados e tente novamente mais tarde.Execute the DROP statement on the new database, and try again later.
  • Se a cópia for bem-sucedida, a coluna state_desc da exibição sys.databases para o novo banco de dados será definida como ONLINE.If the copying succeeds, the state_desc column of the sys.databases view for the new database is set to ONLINE. A cópia foi concluída e o novo banco de dados é um banco de dados normal, capaz de ser alterado de forma independente do banco de dados de origem.The copying is complete, and the new database is a regular database that can be changed independent of the source database.

Observação

Se você decidir cancelar a cópia enquanto ela estiver em andamento, execute a instrução DROP DATABASE no novo banco de dados.If you decide to cancel the copying while it is in progress, execute the DROP DATABASE statement on the new database. Como alternativa, a execução da instrução DROP DATABASE no banco de dados de origem também cancelará o processo de cópia.Alternatively, executing the DROP DATABASE statement on the source database also cancels the copying process.

Resolver logonsResolve logins

Depois que o novo banco de dados estiver online no servidor de destino, use a instrução ALTER USER para remapear os usuários do novo banco de dados para logons no servidor de destino.After the new database is online on the destination server, use the ALTER USER statement to remap the users from the new database to logins on the destination server. Para resolver usuários órfãos, confira Solução de problemas de usuários órfãos.To resolve orphaned users, see Troubleshoot Orphaned Users. Veja também Como gerenciar a segurança do Banco de Dados SQL do Azure após a recuperação de desastre.See also How to manage Azure SQL database security after disaster recovery.

Todos os usuários no novo banco de dados mantêm as permissões que tinham no banco de dados de origem.All users in the new database retain the permissions that they had in the source database. O usuário que iniciou a cópia do banco de dados se tornará o proprietário do novo banco de dados e receberá um novo identificador de segurança (SID).The user who initiated the database copy becomes the database owner of the new database and is assigned a new security identifier (SID). Depois que a cópia for bem-sucedida e antes que outros usuários sejam remapeados, somente o logon que tiver iniciado a cópia, o proprietário do banco de dados, poderá fazer logon no novo banco de dados.After the copying succeeds and before other users are remapped, only the login that initiated the copying, the database owner, can log in to the new database.

Para saber mais sobre como gerenciar usuários e logons ao copiar um banco de dados para um servidor do Banco de Dados SQL diferente, confira How to manage Azure SQL database security after disaster recovery (Como gerenciar a segurança do Banco de Dados SQL do Azure após a recuperação de desastre).To learn about managing users and logins when you copy a database to a different SQL Database server, see How to manage Azure SQL database security after disaster recovery.

Próximas etapasNext steps