Есть несколько способов создания резервной копии MS SQL. Для разовых операций прекрасно подойдет графический инструмент SQL Management Studio. Для автоматизации — Powershell или cmd. Данные операции применяются к любым базам, как для 1С, так и любых других приложений.
Открываем MS SQL Management Studio. Кликаем правой кнопкой мыши по базе, для которой хотим сделать резервную копию – Задачи – Создать резервную копию:
В открывшемся окне оставляем полный тип копий и путь к резервному файлу (при необходимости, можно его поменять, удалив и создав снова. Можно указать как локальный диск, так и сетевой):
После завершения процесса мы увидим сообщение «Резервное копирование базы … успешно завершено».
Данный способ удобно использовать для автоматизации резервного копирования. Более того, команды подходят как для Windows, так и Linux. Выполняется при помощи утилиты sqlcmd.
Синтаксис:
sqlcmd -S <server> -U <user> -P <password> -Q “BACKUP DATABASE [<database>] TO DISK = N'<file path>’ <options>”
@echo offset dd=%DATE:~0,2%set mm=%DATE:~3,2%set yyyy=%DATE:~6,4%set curdate=%dd%-%mm%-%yyyy%set username=saset password=my_pass
set db=work1sqlcmd -S localhost -U %username% -P %password% -Q “BACKUP DATABASE [%db%] TO DISK = N’D:\Backup\MSSQL\%db%_%curdate%.bak’ WITH NOFORMAT, NOINIT, NAME = N’%db%-full’, SKIP, NOREWIND, NOUNLOAD, COMPRESSION, STATS = 10”
set db=work2sqlcmd -S localhost -U %username% -P %password% -Q “BACKUP DATABASE [%db%] TO DISK = N’D:\Backup\MSSQL\%db%_%curdate%.bak’ WITH NOFORMAT, NOINIT, NAME = N’%db%-full’, SKIP, NOREWIND, NOUNLOAD, COMPRESSION, STATS = 10”
* в данном примере мы подключаемся к локальному SQL серверу под учетной записью sa с паролем my_pass и делаем резервную копию баз work1 и work2. Резервные копии размещаем по пути D:\Backup\MSSQL. Имя файлов резервных копий work1_<текущая дата>.bak и work2_<текущая дата>.bak* некоторые опции могут не работать, в зависимости от используемой редакции MS SQL.
Для автоматизации скрипта, создайте задание в планировщике, чтобы скрипт запускался по расписанию.
Хорошей практикой является создание разных типов копий:
1) Полное копирование — резервирование всей базы. Выполняется командой, рассмотренной выше, например:
sqlcmd -S localhost -U sa -P my_pass -Q “BACKUP DATABASE work1 TO DISK = N’D:\Backup\MSSQL\bak_full.bak’ WITH NOFORMAT, NOINIT, NAME = N’bak-full’, SKIP, NOREWIND, NOUNLOAD, STATS = 10”
* в данном примере мы подключаемся к локальному серверу под пользователем sa с паролем my_pass и делаем полную копию базы work1; саму копию сохраняем в виде файла D:\Backup\MSSQL\bak_full.bak.
2) Разностное (дифференциальное) — резервирование базы данных с момента создания последней полной копии. Выполняется командой для резервного копирования с добавлением опции DIFFERENTIAL:
sqlcmd -S localhost -U sa -P my_pass -Q “BACKUP DATABASE work1 TO DISK = N’D:\Backup\MSSQL\bak_diff.bak’ WITH DIFFERENTIAL, NOFORMAT, NOINIT, NAME = N’bak-diff’, SKIP, NOREWIND, NOUNLOAD, STATS = 10”
3) Инкрементальное или копирование логов. Выполняется Transact-SQL:
sqlcmd -S localhost -U sa -P my_pass -Q “BACKUP LOG work1 TO DISK = N’D:\Backup\MSSQL\bak_log.bak’ WITH NOFORMAT, NOINIT, NAME = N’bak-log’, SKIP, NOREWIND, NOUNLOAD, STATS = 10”
* обратите внимение, команда похожа на команду для полного резервного копирования — вместо DATABASE пишем LOG.
Данный способ может быть не доступен на старых системах. В остальном, стоит придерживаться именно такого способа резервного копирования.
Для выполнения команды, сначала импортируем модуль:
import-module sqlps -DisableNameChecking
Backup-SqlDatabase -ServerInstance <имя SQL сервера> -Database <имя базы> -BackupFile <путь к файлу с резервной копией>
$server = “SQL01”$curdate = Get-Date -Format yyyyMMdd
$db = work1Backup-SqlDatabase -ServerInstance $server -Database $db -BackupFile $db_$curdate.bak
* где выполняется резервное копирования базы work1 на сервере SQL01
Также как и для cmd, данный скрипт можно поместить в планировщик для запуска по расписанию.
Данная настройка позволяет указать, через какой промежуток времени резервную копию можно удалить (перезаписать). Важно понимать, что настройка не влияет на сам период восстановления — если срок истек, восстановиться из набора можно.
Задать параметр можно в основном окне при создании резервной копии:
Все резервные копии по умолчанию будут попадать в каталог резервных копий. Чтобы его посмотреть и поменять, при необходимости, выполняем следующее.
Кликаем правой кнопкой мыши по корневому разделу SQL Server и выбираем свойства:
Переходим в раздел Параметры баз данных (1) – в подразделе «Места хранения, используемые базой данных по умолчанию» мы увидим путь до места размещения резервных копий (2), который можно поменять кнопкой справа (3):
Продолжая использовать данный сайт вы принимаете политику конфиденциальности и cookies