Effettuare il backup di tutti i database di SQL Server

È possibile utilizzare SQL Server Management Studio per eseguire il backup dei database o persino utilizzare i piani di manutenzione, ma l’utilizzo di T-SQL è un approccio molto più semplice e veloce.

Con l’uso di T-SQL è possibile generare i comandi di backup e con l’uso di cursori è possibile scorrere tutti i database per eseguire il backup uno per uno.  

  1. Specificare il percorso per archiviare i backup del database
  2. Specifica il formato del nome del file di backup
  3. Seleziona l’elenco di database di cui eseguire il backup
  4. Scorrere i database
  5. Creare a livello di codice il comando di backup del database utilizzando il nome del database, il percorso e il formato del nome file
DECLARE @name VARCHAR(50) -- database name  
DECLARE @path VARCHAR(256) -- path for backup files  
DECLARE @fileName VARCHAR(256) -- filename for backup  
DECLARE @fileDate VARCHAR(20) -- used for file name
 
-- specify database backup directory
SET @path = 'C:\Backup\'  
 
-- specify filename format
-- SELECT @fileDate = CONVERT(VARCHAR(20),GETDATE(),112) 
SELECT @fileDate = CONVERT(VARCHAR(20),GETDATE(),112) + '_' + REPLACE(CONVERT(VARCHAR(20),GETDATE(),108),':','')
 
DECLARE db_cursor CURSOR READ_ONLY FOR  
SELECT name 
FROM master.sys.databases 
WHERE name NOT IN ('master','model','msdb','tempdb')  -- exclude these databases
AND state = 0 -- database is online
AND is_in_standby = 0 -- database is not read only for log shipping
 
OPEN db_cursor   
FETCH NEXT FROM db_cursor INTO @name   
 
WHILE @@FETCH_STATUS = 0   
BEGIN   
   SET @fileName = @path + @name + '_' + @fileDate + '.BAK'  
   BACKUP DATABASE @name TO DISK = @fileName  
 
   FETCH NEXT FROM db_cursor INTO @name   
END   

CLOSE db_cursor   
DEALLOCATE db_cursor