Zálohování a obnovení databáze SQL Server z příkazového řádku
Nejdůležitější součástí plánu údržby serveru SQL je pravidelné zálohování databází. Chcete-li zálohovat databázi, nemůžete jednoduše zkopírovat příslušné soubory MDF a LDF databáze, protože SQL Server má na nich zámek. Místo toho musíte vytvořit soubor opravdového zálohy pomocí serveru SQL Server.
Zatímco to lze provést vytvořením plánu údržby uvnitř SQL Management Studio, volné Express edice serveru SQL Server nenabídnou toto rozhraní. Chcete-li tento problém vyřešit, můžete snadno zálohovat databáze spuštěním níže uvedeného příkazu při přihlášení jako správce systému Windows:
SqlCmd -E -S Server_Name -Q "ZÁKLADNÍ DATABÁZE [Název_obrázdné_databáze] TO DISK =" X: PathToBackupLocation [Název_obrázdky] .bak ""
Níže uvedené příklady vám pomohou.
Výchozí instance serveru SQL Server:
SqlCmd -E -S MyServer -Q "ZÁLOŽNÍ DATABÁZE [MyDB] DO DISK =" D: BackupsMyDB.bak ""
Pojmenovaná instance serveru SQL Server:
SqlCmd -E -S MyServerMyInstance -Q "ZÁLOŽNÍ DATABÁZE [MyDB] DO DISK =" D: BackupsMyDB.bak ""
Výše uvedené vytvoří plně obnovitelnou záložní kopii "MyDB" do souboru "D: BackupsMyDB.bak", který lze použít pro obnovu po havárii. Samozřejmě můžete změnit umístění zálohy a soubor na libovolné, co potřebujete, ale ujistěte se, že zadáte umístění složky, které existuje na místním počítači. Tento záložní soubor pak lze zkopírovat na páskovou jednotku nebo jinou externí zálohu.
Obvyklá otázka je "Může být vytvořen záložní soubor na mapovanou jednotku nebo umístění UNC?" A rychlá odpověď je ne. Důvodem je to, že služba SQL Server Windows Service spuštěna jako uživatelský účet, který má přístup pouze k místnímu počítači. Mohl byste změnit účet, na kterém běží služba, ale je to z bezpečnostních důvodů velmi odrazeno.
Obnovení zálohování databáze z příkazového řádku
Chcete-li obnovit databázi ze záložního souboru, jednoduše použijte příkaz:
SqlCmd -E -S název_serveru -Q "OBNOVIT DATABÁZE [Název_obrázdné_databáze] Z DISK =" X: PathToBackupFile [File_Name] .bak ""
Například:
SqlCmd -E -S MyServer -Q "OBNOVIT DATABÁZE [MyDB] Z DISKU =" D: BackupsMyDB.bak ""
Výše uvedený příkaz obnoví zálohu "MyDB" z dat uložených v záložním souboru "D: BackupsMyDB.bak". Jakékoli změny provedené v MyDB od vytvoření záložního souboru budou ztraceny.
Důležitá věc, kterou je třeba pamatovat při použití výše uvedeného příkazu je, že je určena pro použití na stejném serveru SQL, na kterém byl vytvořen příslušný záložní soubor. Zálohovací soubory SQL ukládají informace "za zákulisí", které řídí, kde a jak jsou kopírovány datové soubory v záložním souboru. Pokud obnovujete zálohu z jiného serveru SQL Server, umístění umístění v souboru zálohy nemusí odpovídat serveru, na který se obnovujete, a dojde k chybě. Zatímco je to možné, je mnohem jednodušší obnovit zálohy vytvořené na jiném serveru SQL pomocí nástroje SQL Management Studio.
Poznámka: výše uvedené příkazy budou fungovat na SQL 2005 a vyšší (jakékoli vydání). Pro SQL 2000 a starší, nahradit 'SqlCmd' s 'oSql'.