Архивиране и възстановяване на базата данни на SQL Server от командния ред
Най-важната част от плана за поддръжка на SQL Server е редовното архивиране на вашите бази данни. За да направите резервно копие на база данни, не можете просто да копирате съответните MDF и LDF файлове на базата данни, тъй като SQL Server има заключване за тях. Вместо това трябва да създадете истински архивен файл чрез SQL Server.
Въпреки че това може да стане чрез разработване на план за поддръжка в SQL Management Studio, безплатните Express издания на SQL Server не предлагат този интерфейс. За да заобиколите това, можете лесно да архивирате вашите бази данни, като изпълните командата по-долу, докато сте влезли като администратор на Windows:
SqlCmd -E -S Име_ на сървъра -Q “BACKUP DATABASE [Name_of_Database] TO DISK =" X: PathToBackupLocation [Name_of_Database] .bak ""
Примерите по-долу ще ви помогнат.
Екземпляр на SQL Server по подразбиране:
SqlCmd -E -S MyServer -Q “BACKUP DATABASE [MyDB] КЪМ DISK =" D: BackupsMyDB.bak ""
Име на SQL Server:
SqlCmd -E -S MyServerMyInstance -Q “BACKUP DATABASE [MyDB] КЪМ DISK =" D: BackupsMyDB.bak ""
Горното създава напълно възстановимо резервно копие на “MyDB” към файла “D: BackupsMyDB.bak”, който може да се използва за възстановяване след бедствие. Разбира се, можете да промените местоположението и файла за архивиране, както ви е необходимо, но се уверете, че сте задали местоположение на папка, което съществува на локалната машина. Този архивен файл може да бъде копиран на лентово устройство или друго външно резервно място.
Често срещан въпрос е „Може ли архивен файл да бъде създаден на картографирано устройство или UNC локация?“ И бързият отговор е „не“. Причината е, че SQL Server Windows Service работи като потребителски акаунт, който има достъп само до локалната машина. Можете да промените акаунта, в който се изпълнява услугата, но това не се препоръчва от съображения за сигурност.
Възстановяване на архивиране на база данни от командния ред
За да възстановите база данни от архивен файл, просто използвайте командата:
SqlCmd -E -S Server_Name -Q “ВЪЗСТАНОВЯВАНЕ НА ДАННИТЕ [Name_of_Database] ОТ DISK =" X: PathToBackupFile [File_Name] .bak ""
Например:
SqlCmd -E -S MyServer -Q “ВЪЗСТАНОВЯВАНЕ НА ДАННИТЕ [MyDB] ОТ DISK =" D: BackupsMyDB.bak ""
Горната команда ще възстанови резервно копие на “MyDB” от данните, съхранени в архивния файл “D: BackupsMyDB.bak”. Всички промени, направени в MyDB след създаването на архивния файл, ще бъдат загубени.
Важно нещо, което трябва да запомните, когато използвате горната команда е, че е предназначено да се използва на същия SQL сървър, на който е създаден съответният архивен файл. SQL архивните файлове съхраняват "зад кулисите" информация, която контролира къде и как се копират файловете с данни в архивния файл. Ако възстановявате резервно копие от различен SQL Server, местоположенията на пътя в архивния файл може да не съвпадат със сървъра, към който възстановявате, и ще се получи грешка. Докато това може да се работи, много по-лесно е да се възстановят архиви, създадени на друг SQL Server, чрез инструмента SQL Management Studio.
Забележка: командите по-горе ще работят с SQL 2005 и по-висока версия (всяко издание). За SQL 2000 и по-рано заменете 'SqlCmd' с 'oSql'.