Zálohování Express Edition

PříspěvekNapsal: 09.09.2008 14:27
od michal.stepanek
MSSQL Express Edition neobsahuje od verze 2005 službu Agent. Nelze tedy naplánovat pravidelný Job pro zálohování jako u "plných" verzi.

Omezení lze obejít Naplánovanou úlohou systému Windows. Nevýhodou je však, že pokud si admin změní heslo, nesmí zapomenout zadat ho i do úlohy.

Lze odkázat na volně dostupné zdroje na internetu:
http://support.microsoft.com/kb/2019698

http://www.buckthebug.net/buckthebug/buckthebug.nsf/dx/zalohovani-na-sql-2005-ee-pomoci-vbs-skriptu.htm
http://www.buckthebug.net/buckthebug/buckthebug.nsf/dx/zalohovani-na-sql-2005-ee-pomoci-t-sql.htm

Za funkčnost zálohy (tedy její obnovitelnost) nese odpovědnost její autor!

Zálohování Express Edition postup a skripty

PříspěvekNapsal: 03.06.2009 10:37
od jan.havranek
Automatické zálohování databází na SQL Express lze vyvtořit jednoduše v několika krocích:
1/ vytvořit SQL skript pro zálohování
2/ vytvořit nejlépe dávku BAT (nebo CMD) která bude spouštět SQL skript
3/ vytvořit plánovanou úlohu Windows, která pravidelně spustí dávku BAT (CMD)

1/ Vytvoření SQL skriptu
Na serveru kde běží SQL (např. v adresáři c:\backup) vytvořit nový textový soubor a ten přejmenovat na backup.sql. Jeho obsah bude tento:
Kód: Vybrat vše
DECLARE @BackupName NVARCHAR(4000)
SET @BackupName = 'LokalniDisk:\AdresarZaloh\JmenoDatabaze'+'_db_'+REPLACE(REPLACE(REPLACE((CONVERT(VARCHAR(100), getdate(),120)),':',''),'-',''),' ','')+'.BAK'
BACKUP DATABASE [JmenoDatabaze] TO  DISK = @BackupName
WITH NOFORMAT, INIT, NAME = N'Full Database Backup', SKIP, NOREWIND, NOUNLOAD
GO

Je třeba nahradit proměnné konkrétními hodnotami. Pokud je více databází, lze skript duplikovat a upravit i pro ostatni z nich, tedy například takto (pro databáze Helios001 a Helios002):
Kód: Vybrat vše
DECLARE @BackupName NVARCHAR(4000)
SET @BackupName = 'c:\zalohy_helios\helios001'+'_db_'+REPLACE(REPLACE(REPLACE((CONVERT(VARCHAR(100), getdate(),120)),':',''),'-',''),' ','')+'.BAK'
BACKUP DATABASE [helios001] TO  DISK = @BackupName
WITH NOFORMAT, INIT, NAME = N'Full Database Backup', SKIP, NOREWIND, NOUNLOAD
GO
DECLARE @BackupName NVARCHAR(4000)
SET @BackupName = 'c:\zalohy_helios\helios002'+'_db_'+REPLACE(REPLACE(REPLACE((CONVERT(VARCHAR(100), getdate(),120)),':',''),'-',''),' ','')+'.BAK'
BACKUP DATABASE [helios002] TO  DISK = @BackupName
WITH NOFORMAT, INIT, NAME = N'Full Database Backup', SKIP, NOREWIND, NOUNLOAD
GO

2/ Vytvoření dávky BAT (CMD)
Na serveru (např. v c:\backup) vytvořit nový textový soubor a přejmenovat jej na backup.bat (případně backup.cmd). Jeho obsah bude tento:
Kód: Vybrat vše
sqlcmd -E -S JmenoServeru\JmenoInstance -i "LokalniCesta\backup.sql"

tedy například:
Kód: Vybrat vše
sqlcmd -E -S localhost\sql2005 -i "c:\backup\backup.sql"

3/ Vytvoření plánované úlohy
Spustit ve Windows - START > Všechny programy > Příslušenství > Systémové nástroje > Naplánované úlohy.
Vytvořit novou úlohu:
  • volbou Procházet vybrat na disku vytvořený soubor backup.bat (backup.cmd)
  • zadat název úlohy a vybrat opakování úlohy (denně, týdně apod.)
  • nastavit čas kdy se úloha bude pravidelně spouštět
  • zadat jméno a heslo uživatele Windows, pod kterým bude úloha spuštěna (tato osoba musí mít administrátorská oprávnění na serveru, tedy nejlépe pokud zde bude přímo doménový Administrator)
  • případná další nastavení úlohy jsou v režii administrátora serveru

Upozornění:
Je třeba pamatovat, že se může změnit heslo uživatele, který je zadán jako vlastník úlohy. V takovém případě je třeba otevřít úlohu a heslo opravit.
Pro každou zálohovanou databázi je třeba přidat do souboru znovu celý skript a upravit údaje o zálohované databázi.
Soubory záloh nejsou průběžně mazány, je třeba je smazat nebo přesunout ručně.
Název zálohy je tvořen jménem databáze, příponou _db_ a datem a časem zálohy.

Re: Zálohování Express Edition

PříspěvekNapsal: 02.07.2009 10:08
od jan.havranek
Následující příspěvek dodal p. Radek Naumec (radek@harpagon.cz) z partnerké společnosti HARPAGON Software s.r.o.
---------------------------------------------
U většiny zákazníků jsem řešil problém s odmazáváním záloh a obvykle to končilo tak, že se po čase zaplnil disk, kam se zálohovalo. Vymyslel jsem skript, kterému řeknete velikost složky (nebo počet souborů) se zálohami a on odmazává zálohy od nejstarší tak, aby ve složce zůstala požadovaná velikost nebo počet souborů. Čili např. nastavíte, že chcete uchovávat 10GB záloh a ze začátku tam bude třeba 100 záložních souborů a jak bude databáze růst, tak se počet záloh bude snižovat. Nehrozí tak zaplnění disku.
Zároveň je vhodné *.BAK soubory komprimovat.
---------------------------------------------
Použití (stáhnout přílohu):
uklid_zalohy.zip
(26.79 KiB) 1235 krát

Vsechny soubory z archivu umístit např. do C:\backup. Soubory se poté dají nastavit jako plánované úlohy Windows a každý soubor má vlastní parametry. Následují popisy a příklady použití jednotlivých dávek.

zabal.bat - má parametr cestu k adresáři backup, resp. tam, kde jsou zálohy.
Zkomprimuje soubory záloh. Pozor na cestu k programu WinRAR.exe, ověřte a případně upravte cestu uvnitř dávky.
Příklad:
Kód: Vybrat vše
zabal.bat c:\zalohy_helios


vymaz-velikost.bat
Maže soubory od nejstaršího tak, aby v adresáři zůstaly soubory do zadané velikosti v kB.
Příklad (ponechá 1GB záložních souborů):
Kód: Vybrat vše
vymaz-velikost.bat c:\zalohy_helios 1048576


vymaz-pocet.bat
Maže soubory od nejstaršího tak, aby v adresáři zůstal uvedený počet souborů.
Příklad (ponechá 14 záložních souborů):
Kód: Vybrat vše
vymaz-pocet.bat c:\zalohy_helios 14

Freeware pro zálohování Express Edition

PříspěvekNapsal: 14.10.2009 13:03
od jiri.dolezal
Alternativně lze využít ozkoušené a funkční freeware řešení: Sql Backup And FTP

Informace a stažení zde:
http://sqlbackupandftp.com/

Klíčová omezení verze zdarma:
- zálohování max. 2 DB