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
