Pokud používáte Windows Internal Database (např. pro RMS, ...) v rámci serveru MS Windows 2008 ( nebo MS Windows Serveru 2008 R2) je dobré také nasadit zálohování.
Nejlépe plně automaticky skrz naplánované úlohy (to co je červeně modifikujeme dle svých potřeb).
Popis skriptu ... co dělá:
- provede automaticky zálohu všech databází
- udržuje historii posledních 12 záloh
- zálohuje do cesty D:\SQLinternal\Backup\
Vytvoříme nejprve příkazový řádek např. pod názvem SQLintBackup.cmd:
@echo off
cls
rem definuje cestu pro zalohy
set BackupFilePath=D:\SQLinternal\Backup\
rem pripojime Windows Internal Database
sqlcmd -S \\.\pipe\MSSQL$MICROSOFT##SSEE\sql\query -E -i SQLintBackup.sql
rem smazeme vsechny soubory starsi 12 dnů
echo Mazu zalohy starsi 12 dnů ...
forfiles /P %BackupFilePath% /M *.bak /D -12 /C "CMD /C DEL /Q @FILE"
A ješte musíme vytvořit soubor s SQL příkazy např. pod názvem SQLintbackup.sql
-- kam bude script zálohovat
:setvar BackupFilePath "D:\SQLinternal\Backup\"
DECLARE
@timestamp AS nvarchar(20),
@current_id AS int,
@current_name AS varchar(max),
@current_file AS varchar(max)
-- vytvori jmeno souboru s casovou znackou (ve frmatu: YYYYMMDD_hhmmss)
SET @timestamp = CONVERT(nvarchar, GETDATE(), 20)
SET @timestamp = REPLACE(@timestamp, '-', '')
SET @timestamp = REPLACE(@timestamp, ':', '')
SET @timestamp = REPLACE(@timestamp, ' ', '_')
SELECT @current_id = MIN(database_id) FROM sys.databases WHERE name <> 'tempdb'
WHILE @current_id IS NOT NULL BEGIN
SELECT @current_name = name FROM sys.databases WHERE database_id = @current_id
SET @current_file = '$(BackupFilePath)' + @current_name + '_' + @timestamp + '.bak' PRINT 'Backing up database ' + @current_name + ' to ' + @current_file
BACKUP DATABASE @current_name TO DISK = @current_file WITH NOINIT
PRINT NULL
SELECT @current_id = MIN(database_id) FROM sys.databases WHERE name <> 'tempdb' AND database_id > @current_id
END
Žádné komentáře:
Okomentovat