Wykonaj kopię zapasową i przywróć bazę danych SQL Server z wiersza poleceń
Najważniejszą częścią planu konserwacji SQL Server jest regularne tworzenie kopii zapasowych baz danych. Aby wykonać kopię zapasową bazy danych, nie można po prostu skopiować odpowiednich plików MDF i LDF bazy danych, ponieważ SQL Server ma na nie blokadę. Zamiast tego należy utworzyć prawdziwy plik kopii zapasowej za pomocą programu SQL Server.
Można to zrobić, opracowując plan konserwacji w SQL Management Studio, jednak bezpłatne wersje Express serwera SQL Server nie oferują tego interfejsu. Aby obejść ten problem, można łatwo tworzyć kopie zapasowe baz danych, uruchamiając poniższe polecenie po zalogowaniu się jako administrator systemu Windows:
SqlCmd -E -S Nazwa_serwera -Q "BACKUP DATABASE [Name_of_Database] TO DISK =" X: PathToBackupLocation [Name_of_Database] .bak ""
Poniższe przykłady pomogą.
Domyślna instancja SQL Server:
SqlCmd -E -S MyServer -Q "BACKUP DATABASE [MyDB] TO DISK =" D: BackupsMyDB.bak ""
Nazwane wystąpienie programu SQL Server:
SqlCmd -E -S MyServerMyInstance -Q "BACKUP DATABASE [MyDB] TO DISK =" D: BackupsMyDB.bak ""
Powyższe tworzy w pełni odtwarzalną kopię zapasową "MyDB" do pliku "D: BackupsMyDB.bak", który może być użyty do odzyskiwania po awarii. Oczywiście można zmienić lokalizację kopii zapasowej i plik na wszystko, czego potrzebujesz, ale upewnij się, że określasz lokalizację folderu, która istnieje na komputerze lokalnym. Ten plik kopii zapasowej można następnie skopiować na napęd taśmowy lub inną zewnętrzną lokalizację kopii zapasowej.
Typowe pytanie brzmi "Czy można utworzyć plik kopii zapasowej na zmapowanym dysku lub lokalizacji UNC?", A szybka odpowiedź brzmi "nie". Powodem jest to, że usługa SQL Server Windows działa jako konto użytkownika, które ma tylko dostęp do komputera lokalnego. Możesz zmienić konto, na którym działa usługa, ale jest to wysoce odradzane ze względów bezpieczeństwa.
Przywracanie kopii zapasowej bazy danych z wiersza poleceń
Aby przywrócić bazę danych z pliku kopii zapasowej, po prostu użyj polecenia:
SqlCmd -E -S nazwa_serwera -Q "PRZYWRACANIE BAZY DANYCH [nazwa_pliku_danych] OD DYSKU =" X: PathToBackupFile [nazwa_pliku] .bak ""
Na przykład:
SqlCmd -E -S MyServer -Q "PRZYWRÓĆ BAZY DANYCH [MyDB] Z DYSKU =" D: BackupsMyDB.bak ""
Powyższe polecenie przywróci kopię zapasową "MyDB" z danych przechowywanych w pliku kopii zapasowej "D: BackupsMyDB.bak". Wszelkie zmiany wprowadzone w MyDB od czasu utworzenia pliku kopii zapasowej zostaną utracone.
Ważną rzeczą do zapamiętania podczas korzystania z powyższej komendy jest to, że ma ona być używana na tym samym serwerze SQL, na którym został utworzony odpowiedni plik kopii zapasowej. Pliki kopii zapasowych SQL przechowują informacje "za kulisami" kontrolujące, gdzie i w jaki sposób kopiowane są pliki danych w pliku kopii zapasowej. Jeśli przywracasz kopię zapasową z innego programu SQL Server, lokalizacje ścieżek w pliku kopii zapasowej mogą nie odpowiadać serwerowi, do którego przywracasz, i wystąpi błąd. Podczas gdy można to obejść, znacznie łatwiej jest przywrócić kopie utworzone na innym serwerze SQL za pomocą narzędzia SQL Management Studio.
Uwaga: powyższe komendy będą działały na SQL 2005 i wyższych (dowolna edycja). W przypadku SQL 2000 i wcześniejszych, zastąp "SqlCmd" przez "oSql".