Como Restaurar Múltiplos Bancos de Dados no SQL Server (3 Métodos)
Como restaurar múltiplos bancos de dados no SQL Server de uma vez? Normalmente, você pode usar um script T-SQL eficiente, ou experimentar um software poderoso com menos restrições.
Você pode restaurar vários bancos de dados SQL de uma vez?
É lamentável que a interface gráfica SSMS só possa restaurar um banco de dados por vez. Se você fez o backup de vários bancos de dados em vários arquivos .bak, é possível restaurá-los todos de uma vez?
A resposta é SIM. Em geral, você pode usar um script T-SQL válido para restaurar vários bancos de dados de uma vez, desde que os arquivos de backup tenham o mesmo nome dos respectivos bancos de dados e não contenham informações adicionais como data/hora.
Se você deseja fazer isso de maneira mais flexível, também existe uma alternativa fácil com interface gráfica. Escolha o método que preferir.
Pré-requisitos para restaurar vários bancos de dados no SQL Server
Restaurar vários bancos de dados no SQL Server pode ser um processo complexo. Para minimizar o tempo de inatividade, há vários pré-requisitos que devem ser atendidos antes de começar:
- Você precisa ter privilégios administrativos e acesso aos arquivos de backup.
- Deve haver apenas um backup de banco de dados por arquivo de backup.
- O arquivo de backup do banco de dados só pode conter dois arquivos: arquivo de log e arquivo de dados.
- Uma vez que usamos o nome do banco de dados para nomear seus arquivos físicos no disco, os caracteres que podem ser usados nos nomes dos arquivos físicos do novo banco de dados que estamos restaurando devem ser permitidos.
Opção 1. Restaurar vários bancos de dados de arquivos .bak usando o xp_cmdshell
Você pode usar um script para restaurar vários bancos de dados no SQL Server a partir de uma pasta. Mas antes disso, por favor, conecte-se à instância e ative o xp_cmdshell.
1. Clique em Nova Consulta e digite o seguinte comando:
-- Permitir a alteração de opções avançadas.
EXEC sp_configure "show advanced options", 1;
GO
-- Atualizar o valor atualmente configurado para opções avançadas.
RECONFIGURE;
GO
-- Ativar a funcionalidade.
EXEC sp_configure "xp_cmdshell", 1;
GO
-- Atualizar o valor atualmente configurado para essa funcionalidade.
RECONFIGURE;
GO
Clique em Executar para executar a consulta e a funcionalidade será ativada.
2. Em seguida, você pode restaurar vários bancos de dados do SQL Server usando o script (por favor substitua "D:\backup\" com sua própria pasta que contém todos os arquivos de backup):
DECLARE @FilesCmdshell TABLE (
outputCmd NVARCHAR (255)
)
DECLARE @FilesCmdshellCursor CURSOR
DECLARE @FilesCmdshellOutputCmd AS NVARCHAR(255)
INSERT INTO @FilesCmdshell (outputCmd) EXEC master.sys.xp_cmdshell "dir /B D:\backup\*.bak"
SET @FilesCmdshellCursor = CURSOR FOR SELECT outputCmd FROM @FilesCmdshell
OPEN @FilesCmdshellCursor
FETCH NEXT FROM @FilesCmdshellCursor INTO @FilesCmdshellOutputCmd
WHILE @@FETCH_STATUS = 0
BEGIN
DECLARE @cmd NVARCHAR(MAX) = "RESTORE DATABASE [" SUBSTRING(@FilesCmdshellOutputCmd, 0, CHARINDEX(".", @FilesCmdshellOutputCmd)) "] FROM DISK = N"'D:\backup\" SUBSTRING(@FilesCmdshellOutputCmd, 0, CHARINDEX(".", @FilesCmdshellOutputCmd)) ".bak"' WITH FILE = 1, NOUNLOAD, STATS = 10"
EXEC(@cmd)
FETCH NEXT FROM @FilesCmdshellCursor INTO @FilesCmdshellOutputCmd
END
✎Nota: Se você receber um erro “O final do log para o banco de dados não foi backup. Use BACKUP LOG WITH NORECOVERY para fazer backup do log se ele conter trabalho que você não deseja perder. Use a cláusula WITH REPLACE ou WITH STOPAT do comando RESTORE para sobrescrever apenas o conteúdo do log”, a solução é exatamente como a indicação.
Por exemplo, você pode modificar o comando de restauração para “…WITH FILE = 1, REPLACE, NOUNLOAD, STATS = 10”
Forma 2. Gerar script para restaurar todos os bancos de dados no SQL Server
Alternativamente, você pode usar um script para gerar comandos de restauração para todos os bancos de dados no SQL Server e combiná-los em um novo script para executar.
1. Clique em Nova Consulta e insira os seguintes comandos na janela SQLQuery:
DECLARE @folderpath VARCHAR (1000)
SELECT @folderpath = "D:\Backup\" -- Local do Backup
SELECT "RESTORE DATABASE[" NAME "] FROM DISK = "'" @folderpath name ".bak"' WITH NORECOVERY,
REPLACE, STATS = 5"
FROM master.sys.databases
WHERE name NOT IN ("master","model","msdb","tempdb","distribution")
Isso irá gerar uma série de comandos para restaurar vários bancos de dados no SQL Server a partir de arquivos bak com os mesmos nomes.
2. Clique com o botão direito em qualquer comando em Resultados, escolha Selecionar Tudo e então Copiar (ou use Ctrl A e Ctrl C).
3. Cole esses comandos na janela SQLQuery como um novo script para Executar. Isso irá restaurar todos os bancos de dados do SQL Server a partir dos arquivos bak com os nomes correspondentes.
Forma 3. Backup e restauração de múltiplos bancos de dados do SQL com GUI (mais fácil)
Os scripts acima são aplicáveis somente quando seus arquivos bak têm exatamente o mesmo nome dos bancos de dados do SQL, o que é bastante restritivo na prática. Portanto, gostaria de fornecer uma forma mais conveniente de fazer backup e restaurar múltiplos bancos de dados, ou até mesmo de toda a instância.
AOMEI Cyber Backup é uma solução confiável de gerenciamento centralizado para backup e restauração de bancos de dados SQL em todos os desktops, laptops e servidores dentro da LAN.
Funciona no Windows 11/10/ 8.1/8/7, Windows Server 2022/2019/2016/2012 (R2)/2008 (R2), e oferece suporte ao backup do SQL Server 2005 a 2022. Além do banco de dados SQL, também oferece suporte ao backup de máquina virtual do Hyper-V e VMware.
- Execute o arquivo .exe baixado para instalar o AOMEI Cyber Backup e abra a interface principal. Clique em Dispositivo de Origem -> Microsoft SQL -> Adicionar Microsoft SQL.
- Escolha Baixar programa proxy ou Copiar link para baixar o programa Agente instalá-lo no dispositivo com o SQL Server instalado. Depois, mude para Proxy já instalado para selecionar o dispositivo.
- Em seguida, clique em
-> Autenticação para validar a instância do banco de dados. Você pode escolher entre Autenticação do Windows ou Autenticação do SQL.
É isso, agora você pode agendar o backup de dados para o servidor SQL adicionado.
◉ Como fazer backup de vários bancos de dados no SQL Server:
1. Clique em Tarefa de Backup -> Criar Nova Tarefa e escolha o Tipo de Backup como Backup do Microsoft SQL.
2. Clique em Nome do Dispositivo para especificar a instância do SQL e os bancos de dados para backup. Você pode selecionar um ou vários bancos de dados conforme sua necessidade.
3. Selecione um armazenamento Destino para salvar seus backups de SQL. Você pode especificar um caminho local ou de rede.
4. Configure o Cronograma para executar o backup do banco de dados SQL diariamente, semanalmente ou mensalmente, e escolha o método de backup como Backup Completo, Incremental ou Diferencial.
Clique em Iniciar Backup para criar e executar a tarefa. Uma vez terminado, você o encontrará na guia Tarefa de Backup.
✍Mais recursos úteis:
- Limpeza de Backup ajuda a excluir automaticamente versões de backup mais antigas e, portanto, economizar espaço de armazenamento.
- Notificação por Email permite receber notificações por email quando a tarefa estiver com algum problema ou tiver sido concluída com sucesso.
- Arquivo ajuda a arquivar os arquivos de backup em um armazenamento AWS S3.
◉ Como restaurar vários bancos de dados a partir do backup:
1. Clique em Tarefa de Backup na barra de menu esquerda, localize a tarefa que você deseja restaurar e clique em -> Restaurar.
2. Selecione a versão do backup que você deseja restaurar os bancos de dados do SQL.
3. Em seguida, selecione o local de destino para restauração. Existem 2 opções:
- Restaurar no local original (padrão): recuperação no local que pode reverter os bancos de dados do SQL para uma versão mais antiga.
- Restaurar em um novo local: selecione outro destino para realizar a recuperação fora do espaço. Você pode especificar o nome do novo banco de dados e modificar o local de armazenamento.
Sobrescrever o banco de dados com o mesmo nome: Se você selecionar esta opção, os bancos de dados de backup irão sobrescrever os bancos de dados de destino com os mesmos nomes. Se você deixar desmarcado, os bancos de dados de destino com os mesmos nomes serão omitidos durante a restauração.
4. Após todas as configurações, clique em Iniciar Restauração para começar o processo de restauração e aguarde pacientemente até que seja concluído. Você pode clicar no botão para ver os detalhes da restauração ou cancelá-la.
✍Notas:
- "Restaurar para a localização original" deve confirmar a existência da localização original. Caso contrário, você só pode selecionar "Restaurar para uma nova localização".
- "Restaurar para a localização original" irá sobrescrever ou excluir os dados do banco de dados original, se o banco de dados original tiver dados importantes, é recomendável escolher "Restaurar para uma nova localização".
Conclusão
A interface gráfica de usuário de restauração do SSMS permite que você restaure apenas um banco de dados por vez. Se você deseja restaurar vários bancos de dados no SQL Server de uma só vez, a abordagem mais comum é usar um script T-SQL. No entanto, isso tem restrições rígidas em nomes de arquivos de backup e torna operações como restaurar bancos de dados para outra instância difícil de implementar. Portanto, você também pode experimentar o software de backup de SQL - AOMEI Cyber Backup.
Isso torna a operação muito mais fácil. Por exemplo, você pode fazer backup automático de bancos de dados SQL com apenas alguns cliques simples e restaurar vários bancos de dados de uma só vez através da mesma operação fácil.