• Home
  • Artikel
  • Projekte
  • Reisen
  • Arbeit
  • Know-how
  • Kunst
  • Über mich
  • Home
  • Kontakt
  • Home
  • Kontakt
  • Home
  • Artikel
  • Projekte
  • Reisen
  • Arbeit
  • Know-how
  • Kunst
  • Über mich

Know-How

Alle SQL Server Datenbanken automatisch sichern

Mit dem SQL Express Edition fehlt eine Möglichkeit alle Datenbanken automatisch zu sichern. Es gibt wohl zig Tutorials wie man das auf eine einzelne Datenbank durchführen kann aber nur wenige die das auf alle Datenbanken einer SQL Server Instanz ausweiten.

Folgendes SQL Skript löst dieses Problem indem es alle Datenbank einer SQL Server Instanz mit dem normalen Backup Befehl speichert:

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

SET @path = 'C:\SQLData\Backup\' 

SELECT @fileDate = CONVERT(VARCHAR(20),GETDATE(),112)

DECLARE db_cursor CURSOR FOR 
SELECT name 
FROM master.dbo.sysdatabases 
WHERE name NOT IN ('master','model','msdb','tempdb') 

OPEN db_cursor  
FETCH NEXT FROM db_cursor INTO @name  

WHILE @@FETCH_STATUS = 0  
BEGIN  
       SET @fileName = @path + @name + '_backup_' + @fileDate + '.BAK' 
       BACKUP DATABASE @name TO DISK = @fileName 

       FETCH NEXT FROM db_cursor INTO @name  
END  

CLOSE db_cursor  
DEALLOCATE db_cursor

Den Code kopieren und als .sql Datei speichern, z.B. backup_all_databases.sql. Die System Datenbanken kann man ausschliessen (wie im Beispielcode) oder mitsichern - wie man es eben braucht.
Mit Hilfe von osql.exe kann man nun die .sql Datei starten (wichtig: SQL Server-Instanz angeben) und dieses z.B. in eine .bat oder .cmd Datei packen:

osql -E -S server\sqlexpress -i C:\backup_all_databases.sql

Tags
SQL

Zurück zur Übersicht

© 2018 In4matiker