26. 1. 2007
Microsoft SQL Server 2005 - zálohování databází
Návod, jak nejjednodušeji vytvořit dávku nebo job, kterým zazálohuji databázi SQL Serveru 2005 (2000 nebo 7.0)
Nechci se zabývat tím, jak zálohování naklikat nějakým grafickým nástrojem jako je například Management Studio nebo Enterprise Manager. Zaměřím se na psaní dávky nebo jobu.
Součástí instalace každého SQL Serveru 2005 (tedy i Express Edition) je řádková utilita SQLCMD, která slouží k dávkovému spouštění SQL-skriptů. A my využijeme příkazu BACKUP DATABASE takto:
SQLCMD.EXE -S JmenoServeru -E -Q "BACKUP DATABASE JmenoDatabaze TO DISK='C:\Cesta\JmenoDatabaze.bak' WITH INIT"
Význam jednotlivých parametrů (pozor, jsou case-sensitive, takže záleží na velikosti, -e a -E by bylo něco jiného):
-S JmenoServeru
Jméno SQL Serveru, na který chci SQL-skript poslat. Jméno může obsahovat specifikaci protokolu (tcp:, np:, lpc:; pozor: prefixy musí být malými písmeny!) a/nebo portu - viz příklady:-S SERVER01
-S tcp:SERVER01
-S tcp:192.168.1.1
-S tcp:192.168.1.1,14333
-E
Říká, že se mám přihlašovat Windows autentikací (také se jí dříve říkalo NT autentikace). Pokud by se někdo chtěl přihlašovat jménem a heslem, tak by parametr -E nahradil -U jméno a -P heslo.
-Q "BACKUP DATABASE..."
Za parametrem -Q je v uvozovkách SQL-příkaz, který chceme na SQL Server poslat. Samozřejmě identifikátor JmenoDatabaze musíte nahradit svým jménem databáze. Klauzule WITH INIT říká, že v případě, že soubor C:\Cesta\JmenoDatabaze.bak už existuje, bude přepsán. Pokud by tam tato klauzule nebyla, tak by záloha byla přidána na konec existujícího souboru a .BAK soubor by postupně rostl.
Pro SQL Server 2000 nebo 7.0 bychom místo SQLCMD.EXE použili OSQL.EXE (je i ve verzích MSDE 1.0 a MSDE2000).
Tento příkaz můžete vložit do dávky (.CMD nebo .BAT soubor) nebo z něj udělat job přes Naplánované úlohy (Scheduled Tasks v anglických Windows).
Pokud chcete zálohování urychlit, podívejte se do mého článku TZblok: Výrazné urychlení zálohování na Microsoft SQL Serveru.
Pro úplnost ještě uvádím, jak by vypadala obnova databáze (RESTORE DATABASE):
SQLCMD.EXE -S JmenoServeru -E -Q "RESTORE DATABASE JmenoDatabaze FROM DISK='C:\Cesta\JmenoDatabaze.bak' WITH REPLACE"
Štítky: SQL Server
- zálohu dělat na lokál a pak nějakou dávkou přesouvat na síť
- změnit účet, pod kterým běží SQL Server na nějaký, který má práva na danou síťovou složku (mění se SQL Server Configuration Managerem). Pozor, to ovšem otevírá novou skupinu problémů - např. při změně hesla pro účet, pod kterým bude nově SQL Server běžet, při příštím restartu služba nenaběhne (z důvodu špatného hesla).
Přihlášení k odběru Komentáře k příspěvku [Atom]
<< Domovská stránka