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.
É 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.
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ê 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”
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.
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.
É 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:
◉ 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
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:
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
✍Notas:
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.