Página inicial

Migração para AWS

Como migrar SQL Server para o Amazon RDS

O Amazon RDS for SQL Server automatiza backups e parte da manutenção; alta disponibilidade exige configurar Multi-AZ. Em troca, você não acessa o Windows nem recebe permissão de sysadmin. Antes de escolher o destino, verifique as dependências do banco, o uso de datas e a janela de migração.

RDS ou SQL Server no EC2?

As duas opções rodam SQL Server na AWS. A diferença é quem administra o quê.

Amazon RDS for SQL ServerSQL Server no Amazon EC2
Backup e restauraçãoBackups automáticos e recuperação em um ponto no tempo, conforme a retenção configurada; você ainda deve testarVocê configura e testa
ManutençãoA AWS opera a infraestrutura e aplica atualizações conforme as configurações; upgrades exigem planejamentoVocê planeja e executa
Acesso ao servidorSem acesso ao Windows e sem sysadminAcesso total
Recursos do SQL ServerAlguns não são suportados (lista abaixo)Dependem da edição instalada e da configuração
LicençaIncluída no preço por hora, ou sua própria licença com Software Assurance nas edições Standard e EnterpriseIncluída no preço por hora ou sua própria licença, conforme as regras da Microsoft

O RDS reduz parte do trabalho de operação. O EC2 oferece mais controle, mas também deixa manutenção, backup e recuperação sob responsabilidade da equipe. A escolha depende das funcionalidades exigidas, do custo e de quem vai operar o banco.

O que o RDS não suporta

Alguns recursos que precisam ser verificados antes da escolha:

Estas consultas são uma triagem inicial no ambiente atual. Elas não detectam chamadas dinâmicas, dependências externas, linked servers nem todos os jobs; revise também o código e a operação:

-- Assemblies CLR criados pelo usuário
SELECT name FROM sys.assemblies WHERE is_user_defined = 1;

-- Arquivos FILESTREAM no banco
SELECT name FROM sys.database_files WHERE type_desc = 'FILESTREAM';

-- Procedures, views e funções que chamam xp_cmdshell
SELECT OBJECT_SCHEMA_NAME(object_id) + '.' + OBJECT_NAME(object_id) AS objeto
FROM sys.sql_modules WHERE definition LIKE '%xp_cmdshell%';

-- Triggers de servidor
SELECT name FROM sys.server_triggers;

Também há limites de tamanho: até 30 bancos por instância nas classes até medium, 16 TiB de armazenamento SSD de uso geral e 10 GB por banco na edição Express.

Decisões que ficam fixas na criação da instância

Fuso horário

O padrão do RDS é UTC, e o fuso não pode ser alterado depois que a instância existe. GETDATE() e SYSDATETIME() seguem o horário da instância. Em outubro de 2026, UTC está três horas à frente do horário de Brasília. Isso causa erro quando a aplicação grava ou interpreta esses valores como se fossem horários locais, especialmente em fluxos fiscais que dependem da data e do horário de emissão.

Antes de criar a instância, escolha conscientemente entre manter UTC na aplicação e usar um fuso local suportado, como E. South America Standard Time (Brasília). Teste gravação, leitura e apresentação das datas; mudar só o fuso do banco não corrige conversões feitas pelo código.

Collation do servidor

A collation padrão do RDS é SQL_Latin1_General_CP1_CI_AS e é definida na criação. Muitos sistemas brasileiros usam outra, como Latin1_General_CI_AI. Restaurar um banco com collation diferente da do servidor é possível, mas o tempdb segue a collation do servidor: comparações de texto com tabelas temporárias podem gerar conflito. Confira a collation do servidor com SELECT SERVERPROPERTY('Collation'); e a do banco com SELECT DATABASEPROPERTYEX(DB_NAME(), 'Collation');. Escolha a collation da instância antes de criá-la e teste as consultas afetadas.

Edição

A Express não tem custo de licença, mas limita cada banco a 10 GB e não tem SQL Server Agent. A Web é bem mais barata que a Standard, mas a licença só permite aplicações web públicas: um ERP interno não se enquadra. Veja o impacto no preço em quanto custa migrar para AWS.

Métodos de migração

MétodoTempo paradoQuando usar
Backup completo (.bak) via S3Depende do backup final, envio, restauração e validaçãoQuando a janela de parada comporta o processo
Backup completo, depois diferencial ou de logDepende do último backup, envio, restauração e validaçãoQuando a cadeia de backups permite reduzir a janela
AWS Database Migration Service (DMS) com replicação contínuaDepende da latência de replicação, pausa de gravações e validaçãoQuando a janela é restrita e a edição de destino é suportada

Backup nativo pelo S3

É uma opção direta quando a janela de parada permite. O backup leva os objetos e dados do banco, como tabelas, índices, procedures, views, triggers e usuários do banco, mas não configurações da instância. Antes, crie um bucket S3 na mesma região da instância, uma role do IAM com acesso a ele e adicione a opção SQLSERVER_BACKUP_RESTORE ao option group da instância.

-- 1. No servidor atual
BACKUP DATABASE [MeuBanco] TO DISK = 'D:\backup\MeuBanco.bak' WITH STATS = 10;

-- 2. Copie o arquivo para o S3 (AWS CLI)
-- aws s3 cp D:\backup\MeuBanco.bak s3://meu-bucket/MeuBanco.bak

-- 3. No RDS
EXEC msdb.dbo.rds_restore_database
  @restore_db_name = 'MeuBanco',
  @s3_arn_to_restore_from = 'arn:aws:s3:::meu-bucket/MeuBanco.bak',
  @type = 'FULL',
  @with_norecovery = 0; -- use 1 se for restaurar diferenciais depois

-- 4. Acompanhe até lifecycle = SUCCESS
EXEC msdb.dbo.rds_task_status @db_name = 'MeuBanco';

Para usar um diferencial, restaure antes o backup completo com @with_norecovery = 1 (diferente do exemplo acima). Na virada, interrompa as gravações, gere e envie o diferencial, e restaure com rds_restore_database, @type = 'DIFFERENTIAL' e @with_norecovery = 0. Se optar por backups de log, a cadeia e as procedures são diferentes e precisam de um ensaio próprio. Um snapshot entre o backup completo e o diferencial pode invalidar essa sequência.

Limites que costumam aparecer: no máximo 5 TB por arquivo (bancos maiores usam backup em vários arquivos), até 10 arquivos por restauração e nenhum backup de versão mais nova do SQL Server restaurado numa versão mais antiga.

AWS DMS

O DMS pode fazer carga inicial e replicação contínua das mudanças, mas a latência varia e deve ser monitorada antes da virada. As exigências de recuperação, log e CDC ou replicação dependem da configuração do SQL Server de origem. Se você deixar o DMS criar as tabelas no destino, ele cria apenas objetos necessários à carga, como tabelas e chaves primárias; índices secundários, chaves estrangeiras, procedures, views e usuários exigem migração separada. O DMS não oferece SQL Server Web ou Express como destino. Compare o esforço dessa opção com o de backup e restauração no seu cenário.

O que não vem junto com o banco

Como fazer a virada

  1. Crie a instância com o fuso, a collation e a edição certos, em sub-rede privada, sem acesso público.
  2. Restaure uma cópia, aponte um ambiente de teste da aplicação para o RDS e rode os fluxos principais, inclusive relatórios e rotinas noturnas.
  3. Recrie logins e jobs, e confira o desempenho das consultas mais pesadas.
  4. No dia da virada, interrompa as gravações, conclua o backup ou a replicação escolhida, confira o atraso e a integridade dos dados, troque a string de conexão e valide os fluxos essenciais.
  5. Mantenha o servidor antigo disponível e defina critérios para voltar antes da virada. Depois que o RDS receber novas gravações, voltar à origem sem reconciliação pode perder dados; o plano deve tratar esse cenário.

Perguntas frequentes

Posso usar a licença de SQL Server que já tenho?

Nas edições Standard e Enterprise, sim, se a licença tiver Software Assurance, pelo programa License Mobility da Microsoft. Fora isso, o RDS usa licença incluída no preço por hora, nas edições Express, Web, Standard e Enterprise.

Vou ter acesso de sysadmin?

Não. O usuário principal da instância é db_owner em todos os bancos de usuário e tem acesso a procedures próprias do RDS para backup, restauração e tarefas administrativas. Rotinas que dependem de sysadmin precisam ser revistas antes da migração.

Quanto custa um banco SQL Server no RDS?

Depende da edição, do tamanho da instância e da região. Na estimativa ilustrativa de custo da migração, consultada em 2 de outubro de 2026, o componente de banco SQL Server Web db.t3.medium, Single-AZ e 50 GB foi US$ 126,93 por mês na Virgínia do Norte, sob demanda e antes dos custos não incluídos naquele cenário. Recalcule com a edição e a arquitetura do seu caso.

E se o banco usar algo que o RDS não suporta?

Há dois caminhos: ajustar o banco antes de migrar, como tirar arquivos do FILESTREAM ou trocar rotinas com xp_cmdshell por um serviço fora do banco, ou instalar o SQL Server num servidor EC2, com acesso total e a operação sob sua responsabilidade.

Veja também os cuidados para migrar a aplicação .NET e o checklist para migrar de VPS para AWS.

Vai migrar um banco SQL Server?

Escreva para audizio@audizio.com.br ou chame pelo LinkedIn e me conte a versão e a edição do SQL Server, o tamanho do banco e onde ele roda hoje. Podemos conversar sobre o caminho e os próximos passos.

Falar por e-mailLinkedIn