Use o SQL Server Management Studio (SSMS) para migrar um banco de dados SQL Server para o Alibaba Cloud RDS for SQL Server. Esse método exporta o banco de dados source como um arquivo .bacpac e o importa na instância RDS de destino. Os exemplos usam o Azure SQL Database como source.
Como a exportação exige que o banco de dados source esteja offline, essa abordagem é ideal para migrações únicas em que uma janela de manutenção é aceitável.
Pré-requisitos
Antes de começar, verifique se você tem:
-
Uma instância RDS for SQL Server que atenda a todos os requisitos abaixo:
Execute o RDS Basic Edition, RDS High-availability Edition ou RDS Cluster Edition. Se executar o RDS High-availability Edition, use o SQL Server 2012 ou superior.
Pertença à família de instâncias de uso geral ou dedicada. A família de instâncias compartilhadas não é compatível.
Use o método de faturamento por assinatura ou pagamento conforme o uso. Instâncias serverless não são compatíveis.
Esteja em uma Virtual Private Cloud (VPC). Para alterar o tipo de rede, consulte Alterar o tipo de rede.
Tenha capacidade de armazenamento superior à do banco de dados source. Dimensione a instância de destino para pelo menos 1,2 vezes o armazenamento do source. Se a capacidade atual for insuficiente, expanda a capacidade de armazenamento antes de prosseguir.
-
Tenha sido criada nas seguintes datas ou posteriormente, dependendo da edição:
RDS High-availability Edition ou RDS Cluster Edition: 1º de janeiro de 2021
RDS Basic Edition: 2 de setembro de 2022
Para verificar a data de criação, acesse a página Basic Information da sua instância no console do ApsaraDB RDS e localize o campo Creation Time na seção Status.
-
SSMS instalado no computador local ou em uma instância Elastic Compute Service (ECS). Se usar uma instância ECS, ela deve estar em uma VPC, executar uma imagem Windows Server e ter um endereço IP público atribuído.
Os exemplos neste guia usam o SSMS 19.1. As etapas podem variar conforme a versão e as configurações do seu SSMS.
Uma conta de administrador de sistema na instância RDS. Faça login na instância com sua conta Alibaba Cloud e crie uma conta de administrador de sistema.
-
Uma lista de permissões de endereços IP na instância RDS que permita conexões do seu cliente:
Para conectar uma instância ECS pela rede interna, tanto a instância ECS quanto a instância RDS devem estar na mesma região e na mesma VPC. Adicione o endereço IP privado da instância ECS à lista de permissões.
Para conectar a partir de um computador local, adicione o endereço IP público dele à lista de permissões. Consulte Configurar uma lista de permissões de endereços IP.
Limitações
Analise estas limitações antes de iniciar a migração:
O banco de dados source deve estar offline durante a exportação. A exportação captura um snapshot transacionalmente consistente do banco de dados; portanto, nenhuma atividade de escrita pode ocorrer durante o processo. Planeje uma janela de manutenção que considere a duração da exportação e da importação. A velocidade da exportação depende das especificações da instância source.
Restrições e views não devem causar falhas na exportação. Valide o esquema do banco de dados source antes de exportar.
Conflitos de nome de banco de dados bloqueiam a importação. Se já existir um banco de dados com o mesmo nome na instância RDS de destino, a importação falhará ou produzirá dados inconsistentes.
-
Os níveis de compatibilidade devem corresponder. Execute a consulta abaixo nas instâncias source e de destino para verificar a compatibilidade:
SELECT name, compatibility_level FROM sys.databases;Para mais informações, consulte Nível de compatibilidade do ALTER DATABASE.
Preparar o banco de dados source (Azure SQL Database)
Ative o acesso à internet para o Azure SQL Database e configure o firewall para permitir conexões do endereço IP público da sua instância ECS ou do seu computador local. Para obter instruções, consulte a documentação do Azure ou entre em contato com o suporte do Azure.
Etapa 1: Exportar dados do Azure SQL Database
Interrompa todas as escritas no banco de dados source antes de exportar. Isso garante que o arquivo .bacpac exportado seja transacionalmente consistente.
No Object Explorer, expanda Databases, clique com o botão direito no banco de dados que deseja migrar e escolha Tasks > Export Data-tier Application.
Na tela de introdução, clique em Next.
Página de configurações de exportação
Na aba Settings, selecione Save To Local Disk.
Clique em Browse, escolha um local para salvar e insira um nome de arquivo com a extensão
.bacpac.-
Na aba Advanced, selecione as tabelas a exportar.
Para exportar outros objetos, como triggers e stored procedures, clique com o botão direito no banco de dados no Object Explorer e escolha Tasks > Generate Scripts . Para mais informações sobre o assistente de exportação, consulte Exportar um aplicativo da camada de dados .
Clique em Next.
Clique em Finish para iniciar a exportação. Quando a exportação for concluída, clique em Close.
Etapa 2: Importar dados para a instância RDS
-
Abra o SSMS e conecte-se à instância RDS. Na caixa de diálogo Connect to Server, configure os parâmetros a seguir:
Parâmetro
Valor
Server type
Database Engine
Server name
O endpoint interno ou público da instância RDS. Para encontrar o endpoint, consulte Visualizar e alterar endpoints e números de porta.
Authentication
SQL Server Authentication
Login
Nome de usuário da conta de administrador de sistema
Password
Senha da conta de administrador de sistema
Clique em Connect.
No Object Explorer, clique com o botão direito em Databases e selecione Import Data-tier Application.
Clique em Next.
Página de configurações de importação
Selecione Import From Local Disk.
Clique em Browse e selecione o arquivo
.bacpacexportado do banco de dados source.Clique em Next.
Página de configurações do banco de dados
-
Em New Database Name, insira o nome do banco de dados na instância RDS.
ImportanteUse o mesmo nome do banco de dados source. Um nome diferente pode causar falhas nos recursos do aplicativo após a transferência das cargas de trabalho para a instância RDS.
Na seção SQL Server Settings, defina tanto Data File Path quanto Log File Path como
E:\SQLDATA\DATA.Clique em Next.
Clique em Finish para iniciar a importação. Quando a importação for concluída, clique em Close.
Etapa 3: Verificar a consistência dos dados
Execute as consultas a seguir nos bancos de dados source e de destino e compare os resultados. Resultados idênticos confirmam uma migração consistente.
Garanta que nenhuma alteração de dados ocorra no banco de dados source enquanto você executa essas consultas. Quaisquer mudanças após a exportação farão com que as contagens de linhas divirjam.
Consulta 1: Verificar a contagem total de linhas
USE <database name>;
SELECT SUM(b.rows) AS 'RowCount'
FROM sysobjects AS a INNER JOIN
sysindexes AS b ON a.id = b.id
WHERE (a.type = 'u') AND (b.indid IN (0, 1))
Consulta 2: Verificar tamanhos dos arquivos de dados
USE <database name>;
SELECT a.name [File name]
,cast(a.[size]*1.0/128 as decimal(12,1)) AS [Specified file size (MB)]
,CAST( fileproperty(s.name,'SpaceUsed')/(8*16.0) AS DECIMAL(12,1)) AS [Storage occupied by the file (MB)]
,CAST( (fileproperty(s.name,'SpaceUsed')/(8*16.0))/(s.size/(8*16.0))*100.0 AS DECIMAL(12,1)) AS [Percentage of the storage occupied by the file to the total storage capacity]
,CASE WHEN A.growth =0 THEN 'Fixed file size' ELSE 'Increment at which the storage that is allocated to the file increases' end [Increase mode]
,CASE WHEN A.growth > 0 AND is_percent_growth = 0 THEN 'Fixed increment'
WHEN A.growth > 0 AND is_percent_growth = 1 THEN 'Increment represented by an integer percentage'
ELSE 'Fixed file size' END AS [Increase mode]
,CASE WHEN A.growth > 0 AND is_percent_growth = 0 THEN cast(cast(a.growth*1.0/128as decimal(12,0)) AS VARCHAR)+'MB'
WHEN A.growth > 0 AND is_percent_growth = 1 THEN cast(cast(a.growth AS decimal(12,0)) AS VARCHAR)+'%'
ELSE 'Fixed file size' end AS [Increment (% or MB)]
,a.physical_name AS [File directory]
,a.type_desc AS [File type]
FROM sys.database_files a
INNER JOIN sys.sysfiles AS s ON a.[file_id]=s.fileid
LEFT JOIN sys.dm_db_file_space_usage b ON a.[file_id]=b.[file_id]
ORDER BY a.[type]
Após concluir a verificação da consistência dos dados, transfira suas cargas de trabalho para a instância RDS for SQL Server e teste se os recursos funcionam conforme o esperado.