Este tópico descreve como usar o SQL Server Management Studio (SSMS) para migrar bancos de dados SQL Server para o ApsaraDB RDS for SQL Server a partir de outras origens, como ambientes locais ou diferentes plataformas de cloud. Este guia usa um Azure SQL Database como exemplo específico.
Pré-requisitos
-
Você criou uma ApsaraDB RDS for SQL Server instance de destino com capacidade de armazenamento maior que a do banco de dados de origem. A instância deve atender aos seguintes requisitos:
NotaA capacidade de armazenamento da instância de destino deve ser de pelo menos 1,2 vezes a do banco de dados de origem. Caso a capacidade de armazenamento da sua instância ApsaraDB RDS for SQL Server atual seja insuficiente, você deve increase its storage capacity.
Executa o RDS Basic Edition, RDS High-availability Edition ou RDS Cluster Edition. Se executar o RDS High-availability Edition, deve usar o SQL Server 2012 ou posterior.
Pertence à família de instâncias de uso geral ou dedicada. A família de instâncias compartilhadas não tem suporte.
Utiliza o método de faturamento por assinatura ou pay-as-you-go. Instâncias serverless não têm suporte.
Reside em uma virtual private cloud (VPC). Para alterar o tipo de rede, consulte Change the network type.
Possui capacidade de armazenamento maior que a do banco de dados de origem. Dimensione a instância de destino para pelo menos 1,2 vezes o armazenamento de origem. Se a capacidade atual for insuficiente, Change specifications antes de prosseguir.
-
Foi criada nas seguintes datas ou após elas, dependendo da sua edição:
RDS High-availability Edition ou RDS Cluster Edition: 1 de janeiro de 2021.
-
RDS Basic Edition: 2 de setembro de 2022.
NotaPara verificar a data de criação, acesse a página Basic Information da sua instância no console do ApsaraDB RDS e procure o campo Creation Time na seção Status.
-
Você instalou a ferramenta SSMS em uma máquina local ou em uma Elastic Compute Service (ECS) instance. Se usar uma instância ECS, ela deve estar em uma VPC, usar uma imagem do Windows Server e ter um endereço IP público.
NotaEste tópico usa o
SSMS 19.1como exemplo. As etapas exatas podem variar dependendo da sua versão do SSMS, das configurações e do ambiente de instalação.
Observações de uso
Para evitar inconsistência de dados, você deve interromper a gravação de dados no banco de dados de origem. O tempo de inatividade necessário depende da quantidade de dados a serem migrados.
A velocidade de exportação de dados depende principalmente das especificações da instância de origem.
Antes de começar
-
Ative o acesso público para o seu Azure SQL Database. Nas configurações de firewall, permita que o endereço IP público da sua máquina local ou instância ECS acesse os services e recursos do Azure.
NotaPara instruções específicas, consulte a documentação oficial do Azure ou entre em contato com o suporte técnico do Azure.
Verifique se o banco de dados de origem não contém restrições, visualizações (views) ou outros objetos que possam causar falha na exportação.
Faça login com sua conta Alibaba Cloud e create a system admin account para a sua instância ApsaraDB RDS for SQL Server.
Execute o comando
SELECT name, compatibility_level FROM sys.databases;nos bancos de dados de origem e de destino para confirmar se o banco de dados de destino é compatível com o banco de dados de origem.-
Configure a whitelist para a instância ApsaraDB RDS for SQL Server para permitir o acesso a partir do cliente na sua instância ECS ou dispositivo local.
NotaPara se conectar a partir de uma instância ECS pela rede interna, certifique-se de que a instância ECS e a instância ApsaraDB RDS for SQL Server estejam na mesma região e VPC. Adicione o endereço IP privado da instância ECS à whitelist da instância RDS.
Para se conectar a partir de um dispositivo local, adicione o endereço IP público do dispositivo à whitelist da instância RDS.
1. Exportar dados do Azure SQL Database
Interrompa a gravação de dados no seu Azure SQL Database e, em seguida, exporte os dados.
-
Acesse o assistente de exportação de dados.
No Object Explorer, expanda Database.
Clique com o botão direito no banco de dados de origem.
Selecione .
NotaPara mais informações, consulte Export Data-tier Application.
Clique em Next.
-
Configure as configurações de exportação.
Na aba Settings da página Export Settings, selecione Save to local disk.
Clique em Browse para selecionar um caminho de arquivo e insira um nome de arquivo.
-
Na aba Advanced, selecione as tabelas que deseja exportar.
NotaSe precisar exportar outros objetos, como gatilhos (triggers) ou procedimentos armazenados (stored procedures), clique com o botão direito no banco de dados de origem no Object Explorer, selecione e siga as instruções para concluir o assistente.
Clique em Next.
Clique em Done.
Após a conclusão da exportação, clique em Close.
2. Importar dados para o ApsaraDB RDS for SQL Server
Importe os dados exportados para a sua instância ApsaraDB RDS for SQL Server.
-
Use SSMS to connect to your ApsaraDB RDS for SQL Server instance.
Abra o SSMS.
-
Na caixa de diálogo Connect to Server, configure as seguintes configurações.
Parâmetro
Descrição
Server type
Selecione Database Engine.
Server name
Insira o Internal Endpoint ou Public Endpoint da sua instância ApsaraDB RDS for SQL Server. Para encontrar o endpoint, consulte View or change endpoints and ports.
Authentication
Selecione SQL Server Authentication.
Username
Insira o nome de usuário da conta de administrador do sistema.
Password
Insira a senha da conta de administrador do sistema.
Clique em Connection.
No Object Explorer, clique com o botão direito em Database.
Selecione Import Data-tier Application.
Clique em Next.
-
Configure as Import Settings.
Selecione Import from local disk.
Clique em Browse e selecione o arquivo .bacpac que você exportou do Azure SQL Database.
Clique em Next.
-
Configure as Database Settings.
-
No campo New database name, insira um nome para o novo banco de dados na instância ApsaraDB RDS for SQL Server.
ImportanteUse o mesmo nome do banco de dados de origem. O uso de um nome diferente pode causar falhas nos recursos do aplicativo após a migração das suas cargas de trabalho para o ApsaraDB RDS for SQL Server.
Se já existir um banco de dados com o nome inserido na instância ApsaraDB RDS for SQL Server, a importação poderá falhar ou causar inconsistência de dados.
Na seção SQL Server Settings, altere o Data file path e o Log file path para E:\SQLDATA\DATA.
Clique em Next.
-
Clique em Done.
Após a conclusão da importação, clique em Close.
3. Verificar a consistência dos dados
Após a conclusão da importação, execute os seguintes comandos nos bancos de dados de origem e de destino para verificar a consistência dos dados. Os dados são consistentes se os resultados coincidirem.
-
Consulte o número de linhas no banco de dados. Este comando retorna o número total de linhas em todas as tabelas de negócios.
ImportanteNão modifique as tabelas de origem ou os dados de snapshot durante a migração. Caso contrário, a contagem de linhas poderá não coincidir.
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)) -
Consulte o tamanho dos dados. Este comando retorna o tamanho e o uso de espaço dos arquivos de dados.
USE <database_name>; SELECT a.name AS [File Name] ,CAST(a.[size]*1.0/128 AS DECIMAL(12,1)) AS [File Size (MB)] ,CAST(FILEPROPERTY(s.name,'SpaceUsed')/(8*16.0) AS DECIMAL(12,1)) AS [Space Used (MB)] ,CAST((FILEPROPERTY(s.name,'SpaceUsed')/(8*16.0))/(s.size/(8*16.0))*100.0 AS DECIMAL(12,1)) AS [Space Usage %] ,CASE WHEN a.growth = 0 THEN 'Fixed size, will not grow' ELSE 'Will autogrow' END AS [Growth Mode] ,CASE WHEN a.growth > 0 AND a.is_percent_growth = 0 THEN 'Grows by a fixed amount' WHEN a.growth > 0 AND a.is_percent_growth = 1 THEN 'Grows by a percentage' ELSE 'Fixed size, will not grow' END AS [Increment Mode] ,CASE WHEN a.growth > 0 AND a.is_percent_growth = 0 THEN CAST(CAST(a.growth*1.0/128 AS DECIMAL(12,0)) AS VARCHAR)+'MB' WHEN a.growth > 0 AND a.is_percent_growth = 1 THEN CAST(CAST(a.growth AS DECIMAL(12,0)) AS VARCHAR)+'%' ELSE 'Fixed size, will not grow' END AS [Increment Value (% or MB)] ,a.physical_name AS [File Path] ,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 verificar a consistência dos dados, você pode migrar seus aplicativos de negócios para a instância ApsaraDB RDS for SQL Server e testar se todos os recursos funcionam conforme o esperado.