Copiar uma cópia transacionalmente consistente de um banco de dados no Banco de Dados SQL do Azure
Aplica-se a: do Banco de Dados SQL do Azure
O Banco de Dados SQL do Azure fornece vários métodos para criar uma cópia de um banco de dados existente no mesmo servidor lógico do Banco de Dados SQL do Azure ou em um servidor lógico diferente. Você pode copiar um banco de dados usando o portal do Azure, PowerShell, CLI do Azure ou Transact-SQL.
Observação
Microsoft Entra ID era anteriormente conhecido como Azure Ative Directory (Azure AD).
Visão geral
Uma cópia de banco de dados é um instantâneo transacionalmente consistente do banco de dados de origem no momento em que a solicitação de cópia é iniciada. Você pode selecionar o mesmo servidor lógico ou um servidor lógico diferente para a cópia. Além disso, você pode optar por manter a redundância de backup e o tamanho de computação do banco de dados de origem ou usar uma redundância de armazenamento de backup diferente e/ou tamanho de computação dentro da mesma camada de serviço. Também é possível copiar um banco de dados na camada de serviço Standard para a camada Standard ou General Purpose, e um banco de dados na camada de serviço Premium para a camada Premium ou Business Critical.
Após a conclusão da cópia, o novo banco de dados é um banco de dados totalmente funcional e independente do banco de dados de origem. Os logons, usuários e permissões no banco de dados copiado são gerenciados independentemente do banco de dados de origem. A cópia é criada usando a tecnologia de replicação geográfica. Quando a propagação da réplica estiver concluída, o link de replicação geográfica será encerrado automaticamente. Todos os requisitos para usar a replicação geográfica se aplicam à operação de cópia do banco de dados. Consulte de visão geral da replicação geográfica ativa para obter detalhes.
Observação
O portal do Azure, o PowerShell e a CLI do Azure não suportam a cópia de banco de dados para uma subscrição diferente.
Cópia de banco de dados para bancos de dados Hyperscale
Para bases de dados na camada de serviço Hyperscale, o banco de dados alvo determina se a cópia é rápida ou baseada no tamanho dos dados.
Cópia rápida: Quando a cópia é feita na mesma região da origem, a cópia é criada a partir dos instantâneos de blobs, essa cópia é uma operação rápida, independentemente do tamanho do banco de dados.
Tamanho da cópia de dados: Quando o banco de dados de destino está em uma região diferente da origem ou se a redundância de armazenamento de backup do banco de dados (Local, Zonal, Geo) do destino difere do banco de dados de origem, a operação de cópia é uma operação de tamanho de dados. O tempo de cópia não é diretamente proporcional ao tamanho, pois os blobs do servidor de página são copiados em paralelo.
Inícios de sessão na cópia da base de dados
Quando você copia um banco de dados para o mesmo servidor lógico, os mesmos logons podem ser usados em ambos os bancos de dados. A entidade de segurança usada para copiar a base de dados torna-se o proprietário da base de dados na nova base de dados.
Quando você copia um banco de dados para um servidor lógico diferente, a entidade de segurança que iniciou a operação de cópia no servidor lógico de destino torna-se o proprietário do novo banco de dados.
Independentemente do servidor de destino, todos os usuários do banco de dados, permissões e identificadores de segurança (SIDs) são copiados para a cópia do banco de dados. O uso usuários de banco de dados contidos para acesso a dados garante que o banco de dados copiado tenha as mesmas credenciais de usuário, para que, após a conclusão da cópia, você possa acessá-lo imediatamente com as mesmas credenciais.
Se você usar logons no nível do servidor para acesso a dados e copiar o banco de dados para um servidor diferente, o acesso baseado em logon pode não funcionar. Isso pode acontecer porque os logins não existem no servidor lógico de destino ou porque essas senhas e identificadores de segurança (SIDs) são diferentes. Para obter mais informações sobre como gerir logins quando se copia um banco de dados para um servidor diferente, consulte Configurar e gerir a segurança do Banco de Dados SQL do Azure para restauração geográfica ou failover. Depois que a operação de cópia para um servidor lógico diferente for bem-sucedida e antes que outros usuários sejam remapeados, somente o logon associado ao proprietário do banco de dados ou o administrador do servidor poderá entrar no banco de dados copiado. Para resolver logins e estabelecer acesso a dados após a conclusão da operação de cópia, consulte Resolver logins.
Copiar usando o portal do Azure
Para copiar uma base de dados no portal do Azure, abra a página da sua base de dados e, em seguida, escolha Copiar para abrir a página Criar Base de Dados SQL - Copiar base de dados. Preencha os valores para o servidor lógico de destino para o qual você deseja copiar seu banco de dados.
Copiar um banco de dados
Você pode copiar um banco de dados usando o PowerShell, a CLI do Azure e o Transact-SQL (T-SQL).
- PowerShell
- Azure CLI
- Transact-SQL
Para PowerShell, use o cmdlet
Importante
O módulo PowerShell Azure Resource Manager (RM) ainda é suportado pelo Banco de Dados SQL do Azure, mas todo o desenvolvimento futuro é para o módulo Az.Sql. O módulo AzureRM continuará a receber correções de bugs até, pelo menos, dezembro de 2020. Os argumentos para os comandos no módulo Az e nos módulos AzureRm são substancialmente idênticos. Para obter mais informações sobre sua compatibilidade, consulte Apresentando o novo módulo Az do Azure PowerShell.
New-AzSqlDatabaseCopy -ResourceGroupName "<resourceGroup>" -ServerName $sourceserver -DatabaseName "<databaseName>" `
-CopyResourceGroupName "myResourceGroup" -CopyServerName $targetserver -CopyDatabaseName "CopyOfMySampleDatabase"
A cópia do banco de dados é uma operação assíncrona, mas o banco de dados de destino é criado imediatamente após a solicitação ser aceita. Se você precisar cancelar a operação de cópia enquanto ainda estiver em andamento, solte o banco de dados de destino usando o cmdlet
Para obter um exemplo completo de script do PowerShell, consulte Usar o PowerShell para copiar um banco de dados para um novo servidor lógico.
Monitorar o progresso da operação de cópia
Monitore o processo de cópia consultando as visões sys.databases, sys.dm_database_copiese sys.dm_operation_status. Enquanto a cópia estiver em andamento, a coluna state_desc
da exibição sys.databases
do novo banco de dados será definida como COPYING
.
- Se a cópia falhar, a coluna
state_desc
da visualizaçãosys.databases
do novo banco de dados será definida comoSUSPECT
. Execute a instrução DROP no novo banco de dados e tente novamente mais tarde. - Se a cópia for bem-sucedida, a coluna
state_desc
da exibiçãosys.databases
do novo banco de dados será definida comoONLINE
. A cópia está concluída e o novo banco de dados é um banco de dados regular que pode ser alterado independentemente do banco de dados de origem.
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.
Importante
Se você precisar criar uma cópia com um objetivo de serviço substancialmente menor do que o de origem, o banco de dados de destino pode não ter recursos suficientes para concluir o processo de propagação e pode fazer com que a operação de cópia falhe. Nesse cenário, use uma solicitação de restauração geográfica para criar uma cópia em um servidor lógico diferente e/ou em uma região diferente. Para obter mais informações, consulte Recuperar um Banco de Dados SQL do Azure usando backups de banco de dados.
Permissões
Para criar uma cópia de banco de dados, você precisa estar nas seguintes funções:
- Proprietário da subscrição ou
- Função de Colaborador do SQL Server ou
- Função personalizada no servidor lógico de origem com as seguintes permissões:
Microsoft.Sql/servers/databases/read
-
Microsoft.Sql/servers/databases/write
e
- Função personalizada no servidor lógico de destino com as seguintes permissões:
Microsoft.Sql/servers/read
Microsoft.Sql/servers/databases/read
Microsoft.Sql/servers/databases/write
Para cancelar uma cópia de banco de dados, você precisa estar nas seguintes funções:
- Proprietário da subscrição ou
- Função de Colaborador do SQL Server ou
- Função personalizada no banco de dados de destino com a seguinte permissão:
Microsoft.Sql/servers/databases/delete
Para gerenciar a cópia do banco de dados usando o portal do Azure, você também precisa das seguintes permissões:
Microsoft.Resources/subscriptions/resources/read
Microsoft.Resources/deployments/read
Microsoft.Resources/deployments/write
Microsoft.Resources/deployments/operationstatuses/read
Se você quiser ver as operações em implantações no grupo de recursos no portal, operações em vários provedores de recursos, incluindo operações SQL, você precisa destas permissões adicionais:
Microsoft.Resources/subscriptions/resourcegroups/deployments/operations/read
Microsoft.Resources/subscriptions/resourcegroups/deployments/operationstatuses/read
Resolver inícios de sessão
Depois que o novo banco de dados estiver online no servidor lógico de destino, use a instrução ALTER USER para remapear os usuários do novo banco de dados para logons no servidor lógico de destino. Para resolver usuários órfãos, consulte Solucionar problemas de usuários órfãos. Consulte também Configurar e gerenciar a segurança do Banco de Dados SQL do Azure para restauração geográfica ou failover.
Todos os usuários no novo banco de dados mantêm as permissões que tinham no banco de dados de origem. O usuário que iniciou a cópia do banco de dados torna-se o proprietário do banco de dados do novo banco de dados. Após a cópia ser bem-sucedida e antes de outros utilizadores serem remapeados, apenas o proprietário do banco de dados poderá aceder ao novo banco de dados.
Para saber mais sobre como gerenciar usuários e logons quando você copia um banco de dados para um servidor lógico diferente, consulte Configurar e gerenciar a segurança do Banco de Dados SQL do Azure para restauração geográfica ou failover.
Erros de cópia do banco de dados
Os seguintes erros podem ser encontrados ao copiar um banco de dados no Banco de Dados SQL do Azure. Para obter mais informações, consulte Copiar uma cópia transacional consistente de um banco de dados no Banco de Dados SQL do Azure.
Código de erro | Gravidade | Descrição |
---|---|---|
40635 | 16 | Cliente com endereço IP '%.*ls' está temporariamente desativado. |
40637 | 16 | Criar cópia de banco de dados está desabilitado no momento. |
40561 | 16 | Falha na cópia do banco de dados. O banco de dados de origem ou de destino não existe. |
40562 | 16 | Falha na cópia do banco de dados. O banco de dados de origem foi descartado. |
40563 | 16 | Falha na cópia do banco de dados. O banco de dados de destino foi descartado. |
40564 | 16 | Falha na cópia do banco de dados devido a um erro interno. Elimine o banco de dados de destino e tente novamente. |
40565 | 16 | Falha na cópia do banco de dados. Não é permitida mais do que 1 cópia simultânea do banco de dados da mesma fonte. Remova o banco de dados de destino e tente novamente mais tarde. |
40566 | 16 | Falha na cópia do banco de dados devido a um erro interno. Por favor, elimine o banco de dados de destino e tente novamente. |
40567 | 16 | Falha na cópia do banco de dados devido a um erro interno. Elimine o banco de dados de destino e tente novamente. |
40568 | 16 | Falha na cópia do banco de dados. A base de dados de origem tornou-se indisponível. Elimine o banco de dados de destino e tente novamente. |
40569 | 16 | Falha na cópia do banco de dados. O banco de dados de destino ficou indisponível. Elimine o banco de dados de destino e tente novamente. |
40570 | 16 | Falha na cópia do banco de dados devido a um erro interno. Elimine a base de dados de destino e tente novamente mais tarde. |
40571 | 16 | Falha na cópia do banco de dados devido a um erro interno. Elimine o banco de dados de destino e tente novamente mais tarde. |