Come ripristinare più database in SQL Server contemporaneamente? Normalmente puoi utilizzare uno script T-SQL efficiente, o provare un potente software con meno restrizioni.
È spiacevole che l"interfaccia grafica di SSMS supporti solo il ripristino di un database alla volta. Se hai effettuato il backup di più database in file .bak separati, è possibile ripristinarli tutti in un"unica operazione?
La risposta è SÌ. In generale, è possibile utilizzare uno script T-SQL valido per ripristinare più database contemporaneamente, a patto che i file di backup siano denominati esattamente come i database corrispondenti e non contengano altre informazioni come data/ora.
Se desideri effettuare un ripristino in modo più flessibile, c"è anche un"alternativa facile tramite interfaccia grafica. Scegli il metodo che preferisci.
Il ripristino di più database in SQL Server può essere un processo complesso. Per ridurre al minimo il tempo di inattività, è necessario soddisfare alcuni prerequisiti prima di iniziare:
Puoi utilizzare uno script per ripristinare più database in SQL Server da una cartella. Ma prima di farlo, connettiti all"istanza e abilita xp_cmdshell.
1. Fai clic su Nuova query e immetti il seguente comando:
-- Per consentire la modifica delle opzioni avanzate.
EXEC sp_configure "show advanced options", 1;
GO
-- Per aggiornare il valore correntemente configurato per le opzioni avanzate.
RECONFIGURE;
GO
-- Per abilitare la funzionalità.
EXEC sp_configure "xp_cmdshell", 1;
GO
-- Per aggiornare il valore correntemente configurato per questa funzionalità.
RECONFIGURE;
GO
Esegui la query e la funzionalità verrà abilitata.
2. Successivamente, è possibile ripristinare più database di SQL Server utilizzando lo script (sostituire "D:\backup\" con la propria cartella contenente tutti i file di 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 si riceve un errore "La coda del log per il database non è stato eseguito il backup. Utilizza BACKUP LOG CON NORECOVERY per eseguire il backup del log se contiene le operazioni che non vuoi perdere. Utilizzare la clausola WITH REPLACE o WITH STOPAT dello statement di RESTORE per sovrascrivere solo i contenuti del log", la soluzione è esattamente come indicato.
Per esempio, è possibile modificare il comando di ripristino in "…WITH FILE = 1, REPLACE, NOUNLOAD, STATS = 10"
.In alternativa, è possibile utilizzare uno script per generare comandi di ripristino per tutti i database in SQL Server e combinarli in un nuovo script da eseguire.
1. Fare clic su Nuova Query e inserire i seguenti comandi nella finestra SQLQuery:
DECLARE @folderpath VARCHAR (1000)
SELECT @folderpath = "D:\Backup\" -- Posizione del 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")
Questo genererà una serie di comandi per ripristinare più database in SQL Server da file bak con nomi corrispondenti.
2. Fare clic con il pulsante destro del mouse su un qualsiasi comando in Risultati, scegliere Seleziona tutto e quindi Copia (o utilizzare Ctrl A e Ctrl C).
3. Incollare questi comandi nella finestra SQLQuery come nuovo script da Eseguire. Ripristinerà tutti i database di SQL Server dai file bak con i nomi corrispondenti.
Gli script precedenti sono applicabili solo quando i file bak sono denominati esattamente come i database SQL, il che è piuttosto restrittivo nella pratica. Pertanto, desidero fornire un modo più conveniente per eseguire il backup e il ripristino di più database, o addirittura dell"intera istanza.
AOMEI Cyber Backup è una soluzione affidabile di gestione centralizzata per il backup e il ripristino di database SQL su tutti i desktop, laptop e server all"interno della LAN.
Funziona su Windows 11/10/8.1/8/7, Windows Server 2022/2019/2016/2012 (R2)/2008 (R2), e supporta il backup di SQL Server 2005 fino al 2022. Oltre al database SQL, supporta anche il backup delle macchine virtuali di Hyper-V e VMware.
Ecco fatto, ora puoi pianificare il backup dei dati per il server SQL aggiunto.
◉ Come eseguire il backup di più database in SQL Server:
1. Fai clic su Attività di Backup -> Crea Nuova Attività, e scegli il Tipo di Backup come Backup Microsoft SQL.
2. Clicca su Nome dispositivo per specificare l"istanza SQL e i database da backup. Puoi selezionare uno o più database a tua scelta.
3. Seleziona un storage Destinazione per salvare i tuoi backup SQL. Puoi specificare un percorso locale o di rete.
4. Configura la Pianificazione per eseguire il backup del database SQL ogni giorno, settimana o mese e scegli il metodo di backup come Backup Completo, Incrementale o Differenziale.
Clicca su Avvia Backup per creare ed eseguire il task. Una volta terminato, lo troverai nella scheda Task di Backup.
✍Altre funzionalità utili:
◉ Come ripristinare più database da un backup:
1. Clicca su Task di Backup nella barra di navigazione a sinistra, individua il task che desideri ripristinare, e clicca su
2. Seleziona una versione di backup da cui desideri ripristinare i database SQL.
3. Successivamente, seleziona la posizione di destinazione in cui desideri ripristinare. Ci sono 2 opzioni:
Sovrascrivi il database con lo stesso nome: Selezionando questa opzione, i database di backup sovrascriveranno i database obiettivo con gli stessi nomi. Se lasci la casella deselezionata, i database obiettivo con gli stessi nomi verranno omessi durante il ripristino.
4. Dopo aver configurato tutte le impostazioni, fai clic su Inizia Ripristino per avviare il processo di ripristino e attendi pazientemente il completamento. Puoi cliccare sul pulsante
✍Note:
L"interfaccia grafica di ripristino di SSMS consente di ripristinare solo un database alla volta. Se si desidera ripristinare più database contemporaneamente in SQL Server, l"approccio più comune è utilizzare uno script T-SQL. Tuttavia, ci sono restrizioni severe sui nomi dei file di backup e diventa complicato eseguire operazioni come il ripristino dei database in un"altra istanza. Pertanto, è possibile provare anche il software di backup SQL - AOMEI Cyber Backup.
Rende l"operazione molto più facile. Ad esempio, è possibile eseguire il backup automatico dei database SQL con pochi semplici clic e ripristinare contemporaneamente più database tramite un"operazione altrettanto semplice.