06.04.2022, Vladimír Klaus, navštíveno 1067x
Zálohování SQL Server databáze má mnoho aspektů a byla k tomu napsána spousta knih. Jako třeba tato úžasná 380stránková příručka "SQL Server Backup and Restore". Co ale zřejmě naštve každého začínajícího uživatele bývá skutečnost, že každé spuštění zálohování zdvojnásobí velikost zálohy. Je to výchozí nastavení a znamená to, že každá záloha se přidává do tzv. sady uvnitř BAK souboru.
Zálohování přes SSMS pomocí dialogu
Když provedete klasické zálohování kliknutím pravým tlačítkem na databázi a pak Tasks > Back Up... tak se to chová, jak bylo uvedeno výše.
Stačí se ale přepnout na kartu Media Options a tam změnit nastavení "Overwrite media". Ještě je třeba dát pozor na to, že uvedené nastavení se nepamatuje - ani pro aktuální databázi, ani pro SSMS!
Zálohování přes SSMS pomocí SQL příkazu
Velmi jednoduchý příkaz zazálohuje uvedenou databázi do cílového souboru a pokud se i zde chcete vyhnout zdvojnásobování velikosti, musíte použít "WITH INIT".
BACKUP DATABASE MojeDatabaze TO DISK=c:\Zaloha\MojeDatabaze.bak WITH INIT
V dávkovém souboru pomocí SQLCMD
SQLCMD je řádková utilita pomocí které předáme pár parametrů (pozor, záleží na velikosti písmen) a SQL příkaz, který má vykonat.
SQLCMD -E -S (local) -Q "BACKUP DATABASE MojeDatabaze TO DISK='c:\Zaloha\MojeDatabaze.bak' WITH INIT"
Význam jednotlivých parametrů:
- -E – použije se důvěryhodné připojení (není třeba zadávat jméno a heslo)
- -S – jakého serveru se to týká
- -Q – provede se příkaz a vše se ukončí
Zdroje: