Kopie zapasowe MSSQL serwer z wiersza poleceń
Kopie zapasowe baz danych serwera MSSQL można tworzyć z linii poleceń za pomocą polecenia SqlCmd. Zaletą tego rozwiązania jest możliwość stworzenia skryptu, który można podłączyć pod harmonogram zadań systemu Windows.
Podstawowa składnia polecenia SqlCmd to:
SqlCmd ‑E ‑S Nazwa_serwera ‑Q "BACKUP DATABASE [Name_of_Database] TO DISK =" X: PathToBackupLocation [Name_of_Database] .bak ""
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 ""
Aby uruchomić przywracanie bazy 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 ""
Ważną zagadnieniem podczas korzystania z powyższej komendy jest to, że ma ona być używana na tym samym serwerze SQL, na którym został utworzony 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 serwera SQL, lokalizacje ścieżek w pliku kopii zapasowej mogą nie odpowiadać serwerowi, do którego przywracasz, i wystąpi błąd. Można to „obejść”, przywracając kopie 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".
Opcje polecenia sqlcmd
-a packet_size
-A (dedicated administrator connection)
-b (terminate batch job if there is an error)
-c batch_terminator
-C (trust the server certificate)
-d db_name
-D
-e (echo input)
-E (use trusted connection)
-f codepage | i:codepage[,o:codepage] | o:codepage[,i:codepage]
-g (enable column encryption)
-G (use Azure Active Directory for authentication
-h rows_per_header
-H workstation_nam
-i input_file
‑I (enable quoted identifiers)
-j (Print raw error messages)
-k[1 | 2] (remove or replace control characters)
-K application_intent
-l login_timeout
-L[c] (list servers, optional clean output)
-m error_level
-M multisubnet_failover
-N (encrypt connection)
-o output_file
-p[1] (print statistics, optional colon format)
-P password
-q "cmdline query"
-Q "cmdline query" (and exit)
-r[0 | 1] (msgs to stderr)
-R (use client regional settings)
-s col_separator
-S [protocol:]server[instance_name][,port]
-t query_timeout
-u (unicode output file)
-U login_id
-v var = "value"
-V error_severity_level
-w column_width
-W (remove trailing spaces)
-x (disable variable substitution)
-X[1] (disable commands, startup script, environment variables, optional exit)
-y variable_length_type_display_width
-Y fixed_length_type_display_width
-z new_password
-Z new_password (and exit)
-? (usage)
Więcej:
https://docs.microsoft.com/en-us/sql/tools/sqlcmd-utility?view=sql-server-ver15
Pliki:
https://drive.google.com/file/d/1ZoxMp7MlUBoyqSEubhtGOuZRxO5aix5m/view?usp=sharing