Cloud e Infraestrutura

Como fazer backup de banco de dados SQL Server?

Equipe C3 IT Solution
16 min de leitura
Como fazer backup de banco de dados SQL Server?

Quem administra bancos de dados SQL Server em produção conhece a pressão: uma falha de disco, uma corrupção silenciosa, um comando executado na base errada ou um ataque de ransomware podem interromper operações financeiras em segundos. É nesse contexto que backup de banco de dados SQL Server deixa de ser uma tarefa de rotina e passa a integrar a estratégia de continuidade e conformidade da empresa. A pergunta que decisores de TI precisam responder não é apenas como executar o backup, mas como estruturar uma rotina que resista a cenários reais de perda.

Este artigo percorre os métodos disponíveis — nativo, via SSMS, T-SQL e PowerShell, além de soluções de terceiros — e aprofunda pontos que costumam ficar de fora dos guias rápidos: definição de RPO e RTO, escolha do modelo de recuperação, estratégia de retenção e rotação de arquivos, envio para Azure Blob Storage, monitoramento de falhas e o teste periódico de restauração. Também aborda erros comuns de diagnóstico e particularidades de ambientes com Always On Availability Groups.

Se a decisão envolve contratar apoio especializado, vale entender critérios de avaliação em como escolher um serviço de backup corporativo antes de definir o desenho da solução.

O que é backup de banco de dados SQL Server e por que ele é indispensável

Backup de banco de dados SQL Server é o processo de criar uma cópia consistente dos dados, do esquema e dos objetos de um banco para que possam ser recuperados em caso de falha, corrupção, erro humano ou ataque. Diferente de uma simples cópia de arquivos, o backup do SQL Server é transacionalmente consistente: ele captura o estado do banco em um ponto específico no tempo, garantindo que transações incompletas não comprometam a integridade da restauração. O motor do SQL Server grava os backups em arquivos com extensão .bak (para backups completos e diferenciais) ou .trn (para logs de transação), podendo também gravar diretamente em URLs do Azure Blob Storage a partir do SQL Server 2012 SP1 CU2.

Para empresas que operam ambientes financeiros, processam transações via Pix ou mantêm dados sensíveis sob regulação, o backup não é apenas uma rotina operacional — é um requisito de continuidade e conformidade. A perda de minutos de transação pode representar impacto financeiro direto e exposição regulatória. Nesse cenário, a pergunta correta não é se o backup deve existir, mas qual janela de perda de dados (RPO, Recovery Point Objective) e qual tempo de recuperação (RTO, Recovery Time Objective) a empresa aceita. O backup é o instrumento que define esses dois indicadores. Uma estratégia bem desenhada combina tipos de backup, frequência e destinos distintos para reduzir a janela de perda sem inviabilizar a operação — e precisa ser testada regularmente, como abordado na seção sobre onde ficam armazenados os dados de backup da empresa.

Tipos de backup no SQL Server: full, diferencial, de log de transações e copy-only

O SQL Server oferece quatro tipos principais de backup, cada um com função específica na cadeia de recuperação. O backup full copia todo o banco de dados, incluindo objetos, dados e parte do log de transações necessária para consistência. Ele é a base de qualquer estratégia: nenhum backup diferencial ou de log pode ser restaurado sem o full que o originou. O backup diferencial captura apenas as extensões (páginas de 8 KB) alteradas desde o último full, reduzindo drasticamente o tamanho e o tempo de execução em bancos com grande volume de dados e baixa taxa de mudança diária.

O backup de log de transações registra as operações do log desde o último backup de log, permitindo recuperação point-in-time — essencial quando é preciso desfazer uma atualização mal executada ou voltar a um instante anterior a uma falha. Já o backup copy-only cria uma cópia independente, sem quebrar a sequência de backups diferenciais ou de log. Ele é útil para gerar uma cópia pontual para testes, auditoria ou migração sem interferir na rotina de retenção.

O tipo de backup disponível depende diretamente do modelo de recuperação do banco. No modelo Simple, backups de log não são possíveis — o log é truncado automaticamente a cada checkpoint, e a recuperação point-in-time fica limitada ao último full ou diferencial. Nos modelos Full e Bulk-Logged, o log é mantido até ser feito backup explícito, habilitando recuperação a qualquer instante. Bancos de produção com transações financeiras ou Pix devem operar em modelo Full; o modelo Simple é aceitável para bases de desenvolvimento ou relatório onde a perda de dados desde o último backup full é tolerável.

Quando usar cada tipo e como combiná-los em uma estratégia

Uma estratégia madura combina os tipos em camadas. O padrão mais comum em ambientes de produção com modelo Full é:

  • Full semanal: domingo ou sábado, fora do pico de uso
  • Diferencial diário: reduz o número de arquivos a restaurar
  • Log a cada 15–30 minutos: minimiza a janela de perda
  • Copy-only mensal: para auditoria ou teste sem afetar a cadeia

Para um banco que processa transações Pix, uma janela de perda de 30 minutos pode ser inaceitável; nesses casos, o backup de log é agendado a cada 5 ou 10 minutos. A frequência do log deve ser calibrada pelo volume de transações e pelo RPO definido em contrato ou política interna. Vale lembrar que cada backup de log também é um ponto de restauração — quanto mais frequente, mais granular a recuperação, mas maior o consumo de espaço e o tempo de restore em cenários de desastre total.

Pré-requisitos: permissões, espaço em disco e destino do arquivo .bak

Para executar um backup, a conta de serviço do SQL Server precisa de permissão de gravação no diretório de destino — local ou compartilhamento de rede. A role mínima para emitir o comando é db_backupoperator no banco em questão, mas para agendar jobs via SQL Server Agent, a conta do agente também exige acesso ao caminho. Em instâncias com xp_cmdshell habilitado ou backups em compartilhamento UNC, a conta de serviço (não o usuário que dispara o comando) é quem efetivamente grava o arquivo, um detalhe frequentemente ignorado em troubleshooting de permissão.

O espaço em disco precisa acomodar não apenas o arquivo atual, mas a política de retenção completa. Um banco de 500 GB com full semanal e retenção de 4 semanas exige, no mínimo, cerca de 2 TB apenas para os fulls, sem contar diferenciais e logs. O ideal é usar um volume dedicado, com monitoramento de espaço livre e alerta antes de atingir 80% de ocupação. Destinos possíveis incluem disco local, compartilhamento de rede, Azure Blob Storage via URL e appliances de backup de terceiros. A escolha do destino impacta diretamente a velocidade de restauração e a resiliência contra ransomware — um backup gravado apenas em disco local da própria instância é vulnerável a criptografia em caso de ataque ao servidor.

Como fazer backup completo pelo SQL Server Management Studio (SSMS)

O SSMS oferece uma interface gráfica para gerar backups sem escrever código. O caminho é: conectar à instância, expandir Databases, clicar com o botão direito no banco desejado, selecionar Tasks e depois Back Up…. A janela Back Up Database abre com as opções de tipo, destino e configurações avançadas. Embora o procedimento seja simples, ele executa exatamente o mesmo comando T-SQL que seria digitado manualmente — e o SSMS permite gerar o script correspondente clicando no botão Script, útil para auditoria e padronização.

Passo a passo da janela Back Up Database

Na janela aberta, o primeiro campo é Database, já preenchido com o banco selecionado. O campo Backup type define o tipo: Full, Differential ou Transaction Log. Em Backup component, mantenha Database selecionado. Na seção Destination, o SSMS lista os destinos existentes; para adicionar um novo, clique em Add… e informe o caminho completo do arquivo com extensão .bak — ou uma URL do Azure se o contêiner já estiver configurado com credencial no SQL Server.

Na página Media Options, o comportamento padrão Append to the existing backup set acumula múltiplos backups no mesmo arquivo, enquanto Overwrite all existing backup sets substitui o conteúdo. Para rotinas automatizadas, a sobrescrita com retenção controlada é mais previsível; para arquivos de auditoria, o append evita perda acidental. A opção Verify backup when finished executa uma validação de integridade ao final, recomendada para backups manuais críticos. Em Backup Options, o campo Set backup compression controla a compactação, e Checksum ativa a verificação de soma de verificação durante a gravação.

Opções de compactação, verificação e checksum

A compactação de backup reduz o tamanho do arquivo e o tempo de gravação, mas consome CPU durante a operação. Em servidores com folga de processamento, é vantajosa; em instâncias saturadas, pode degradar a performance de produção. A configuração padrão pode ser definida no nível da instância via sp_configure 'backup compression default', ou por comando com a cláusula WITH COMPRESSION. O ganho típico varia conforme o tipo de dados — bancos com muitos campos textuais comprimem melhor que bases com dados já compactados ou criptografados.

O checksum (cláusula WITH CHECKSUM) faz o SQL Server calcular uma soma de verificação de cada página lida durante o backup e gravá-la no arquivo. Na restauração, a opção WITH CHECKSUM valida essas somas e detecta corrupção introduzida no arquivo .bak. O custo é um pequeno overhead de CPU, amplamente justificado em ambientes que lidam com dados sensíveis. A opção Verify backup when finished do SSMS, por sua vez, lê o arquivo recém-gravado e confirma que ele é legível — mas não substitui um teste real de restauração em outro servidor.

Backup com T-SQL: exemplos de BACKUP DATABASE e BACKUP LOG

O comando BACKUP DATABASE é a base de qualquer automação. Um backup full com compactação, checksum e sobrescrita do arquivo fica assim:

BACKUP DATABASE [MinhaBase] TO DISK = N'E:\Backup\MinhaBase_FULL.bak' WITH INIT, COMPRESSION, CHECKSUM, STATS = 10;

A opção INIT sobrescreve o arquivo; STATS = 10 exibe o progresso a cada 10%. Para um backup diferencial, o comando é idêntico com a cláusula DIFFERENTIAL:

BACKUP DATABASE [MinhaBase] TO DISK = N'E:\Backup\MinhaBase_DIFF.bak' WITH DIFFERENTIAL, INIT, COMPRESSION, CHECKSUM;

O backup de log usa BACKUP LOG e exige que o banco esteja em modelo de recuperação Full ou Bulk-Logged:

BACKUP LOG [MinhaBase] TO DISK = N'E:\Backup\MinhaBase_LOG.trn' WITH INIT, COMPRESSION, CHECKSUM;

Para gravar diretamente no Azure Blob Storage, substitua o caminho de disco por uma URL, desde que exista uma credencial criada com CREATE CREDENTIAL apontando para a assinatura de acesso compartilhado (SAS) do contêiner. Esse formato é útil para manter uma cópia fora do site e complementa estratégias de backup em ambientes híbridos Azure e on-premise.

Automatizando backups com SQL Server Agent e PowerShell

Backup manual é inviável em produção. A automação começa com o SQL Server Agent, serviço disponível nas edições Standard e superiores (não na Express). Ele permite agendar jobs que executam scripts T-SQL, PowerShell ou comandos do sistema operacional em horários definidos, com notificação por e-mail em caso de falha. A ausência do Agent na edição Express é um argumento técnico para não hospedar bancos de produção nessa edição — nela, a automação depende de ferramentas externas como o Agendador de Tarefas do Windows ou soluções de terceiros.

O PowerShell com o módulo SqlServer (sucessor do SQLPS) oferece uma camada adicional de controle: é possível iterar por múltiplos bancos, aplicar lógica condicional por tamanho ou prioridade, registrar logs estruturados e integrar com sistemas de monitoramento. Um script típico usa Backup-SqlDatabase para o full e Backup-SqlDatabase -BackupAction Log para logs, com parâmetros de compactação e checksum. A vantagem sobre o Agent puro é a portabilidade: o mesmo script roda em instâncias diferentes e pode ser versionado em repositório Git, alinhado a práticas de DevOps.

Criando um job de backup diário com agendamento

No SSMS, expanda SQL Server Agent, clique com o botão direito em Jobs e selecione New Job…. Na aba General, nomeie o job de forma padronizada — por exemplo, Backup_Full_MinhaBase_Diario. Na aba Steps, crie um passo do tipo Transact-SQL script (T-SQL) e cole o comando BACKUP DATABASE com as cláusulas desejadas. Na aba Schedules, defina a recorrência: para um full diário, selecione Daily e informe o horário fora do pico. Na aba Notifications, ative o alerta por e-mail em caso de falha — exige o Database Mail configurado previamente.

Para logs a cada 15 minutos, crie um job separado com agendamento do tipo Daily e frequência de ocorrência definida em minutos. O SQL Server Agent permite granularidade de até alguns segundos. Um ponto crítico: o job deve registrar o resultado de cada execução na tabela msdb.dbo.sysjobhistory, e essa tabela precisa ser monitorada — um backup que falha silenciosamente por 30 dias é pior do que nenhum backup, porque gera falsa sensação de proteção.

Como restaurar um backup e validar a integridade dos dados

A restauração segue a ordem inversa da cadeia de backup: primeiro o full, depois o diferencial mais recente e, por fim, os logs na sequência correta. No SSMS, clique com o botão direito em Databases e escolha Restore Database…. Em Source, selecione Device e aponte para o arquivo .bak. O SSMS lista os backups contidos no arquivo e permite marcar quais serão restaurados. A opção WITH RECOVERY deixa o banco pronto para uso; WITH NORECOVERY mantém o banco em estado de restauração, aguardando os próximos arquivos da cadeia — obrigatório ao restaurar full + diferencial + logs em sequência.

Em T-SQL, a sequência completa fica:

RESTORE DATABASE [MinhaBase] FROM DISK = N'E:\Backup\MinhaBase_FULL.bak' WITH NORECOVERY, CHECKSUM;

RESTORE DATABASE [MinhaBase] FROM DISK = N'E:\Backup\MinhaBase_DIFF.bak' WITH NORECOVERY, CHECKSUM;

RESTORE LOG [MinhaBase] FROM DISK = N'E:\Backup\MinhaBase_LOG.trn' WITH RECOVERY, CHECKSUM;

A validação de integridade não termina na restauração. Após o banco ficar online, execute DBCC CHECKDB para verificar a consistência lógica e física das páginas. Em bancos grandes, o CHECKDB pode levar horas; nesses casos, use a opção WITH PHYSICAL_ONLY para uma checagem mais rápida em rotinas frequentes, reservando a validação completa para janelas mensais. A restauração em um servidor de testes — não na instância de produção — é o único teste que confirma, de fato, que o arquivo .bak é recuperável.

Boas práticas, erros comuns e política de retenção

Erros comuns em rotinas de backup incluem: gravar o .bak no mesmo disco do banco de origem (perde-se ambos em falha de hardware); nunca testar restauração; usar modelo Simple em produção sem avaliar o RPO; ignorar falhas de job por falta de monitoramento; e manter retenção indefinida sem critério, consumindo espaço e dificultando auditoria. Outro erro frequente é não documentar a senha ou a chave de criptografia usada em backups criptografados — sem ela, o arquivo é irrecuperável.

A política de retenção precisa ser explícita e testável. Um modelo comum em ambientes regulados é:

  • Full: retenção de 30 dias, com uma cópia mensal arquivada por 12 meses
  • Diferencial: retenção de 7 dias, descartado após o full seguinte
  • Log: retenção de 3 a 7 dias, alinhada à janela de auditoria
  • Copy-only: retenção conforme demanda legal ou contratual específica

A retenção deve considerar não apenas a operação, mas obrigações regulatórias — ambientes financeiros podem exigir guarda de evidências por prazos definidos em normativos do Banco Central ou de órgãos de compliance. A rotação de arquivos .bak pode ser automatizada com jobs de limpeza, mas a exclusão deve ser precedida de verificação de que um backup mais recente foi validado com sucesso.

Backup em nuvem, Azure Blob Storage e ambientes Always On

O Azure Blob Storage aceita backups nativos do SQL Server via URL, dispensando staging local. A configuração exige criar uma credencial no SQL Server com a SAS do contêiner e, a partir do SQL Server 2016, permite também o uso de Managed Backup, que automatiza a rotina com base na carga de trabalho e na política de retenção definida. O backup em nuvem adiciona resiliência geográfica e proteção contra perda do datacenter local, mas não elimina a necessidade de testar restauração — a latência de rede para baixar um .bak de 500 GB pode inviabilizar um RTO agressivo se não houver planejamento de restauração a partir da nuvem.

Em Always On Availability Groups, o backup pode ser executado na réplica primária ou em uma secundária, desde que configurada com BACKUP_PRIORITY adequada. A preferência de backup é definida no grupo de disponibilidade e pode direcionar a rotina para uma réplica secundária síncrona ou assíncrona, aliviando a carga da primária. Backups de log em réplicas secundárias exigem atenção: a sequência de log é única para o grupo, e a restauração point-in-time depende de manter todos os arquivos de log da cadeia, independentemente de onde foram gerados. Para bancos participantes de grupos de disponibilidade, o backup precisa ser consistente com a topologia — um full feito na primária antes de um failover pode não servir como base para diferenciais feitos na nova primária sem validação.

Para ambientes que combinam on-premise e Azure, a estratégia de backup híbrido deve definir claramente qual camada é fonte de verdade para restauração e qual é contingência. O uso de backup imutável — recurso disponível em storages como Azure Blob com WORM (Write Once, Read Many) — impede que um atacante com credenciais de backup apague ou altere cópias existentes, reduzindo o impacto de ransomware direcionado a rotinas de backup.

Testando a restauração: o backup só vale se puder ser recuperado

O teste de restauração é o elo mais negligenciado e mais crítico da política de backup. A prática recomendada é automatizar uma restauração periódica — semanal ou mensal — em um servidor isolado, executar DBCC CHECKDB e registrar o resultado. Esse teste valida não apenas a integridade do arquivo, mas o tempo real de restauração, a ordem correta da cadeia e a disponibilidade das credenciais e chaves de criptografia. Sem ele, a empresa descobre a falha apenas no momento em que precisa recuperar os dados — o pior cenário possível.

O procedimento pode ser agendado com SQL Server Agent e PowerShell, restaurando o último full + diferencial + logs em uma instância de validação e gravando o resultado em uma tabela de auditoria. A integração com ferramentas de monitoramento permite alertar quando o teste falha ou quando o tempo de restauração ultrapassa o RTO definido. Empresas que buscam apoio especializado para desenhar e operar essa rotina encontram em consultorias de infraestrutura Microsoft a combinação de backup anti ransomware e governança de dados que reduz risco sem prometer eliminação absoluta de incidentes.