Внимание! Эта статья больше не актуальна, так как последние версии обновлятора поддерживают sql-выгрузку штатно:
Внимание! Эта статья больше не актуальна, так как последние версии обновлятора поддерживают sql-выгрузку штатно (см. картинку выше).
В этой статье я расскажу как для серверной базы настроить выгрузку из sql-сервера перед началом обновления.
Эта выгрузка будет служить дополнительной и главной архивной копией базы, потому что dt-выгрузка, создаваемая обновлятором по умолчанию, таковой, конечно, считаться никак не может.
Итак, поехали
В нашем распоряжении есть серверная база torg располагающаяся на кластере 127.0.0.1:
Заходим в расширенные настройки этой базы (кнопка "Расширенные настройки базы...) на закладку "Перед обновлением":
Сюда мы напишем пакетный скрипт для выгрузки полной копии базы sql-сервером в папку "X:\SqlBackups".
Для этого мы задействуем консольную утилиту sqlcmd, которая идёт в комплекте с Microsoft SQL Server (я не специалист по администрированию серверных баз, но уверен, что аналогичные утилиты есть и для других СУБД).
Скрипт для выгрузки будет таким:
Sqlcmd -S "VOLK\SQLEXPRESS" -Q "BACKUP DATABASE [%base_ref%] TO DISK = N'x:SqlBackups/%stamp%.bak' WITH NOFORMAT, INIT, NAME = N'%stamp%', NOSKIP, REWIND, NOUNLOAD, STATS = 10" |
Обращаю ваше внимание на то, что VOLK\SQLEXPRESS - это полный путь к экземпляру sql сервера на моём компьютере (с именем VOLK). У вас будет свой вариант - его можно легко увидеть в SQL Server Management Studio.
Сохраняем настройки:
И запускаем обновление базы:
Обратите внимание на то, что наряду с dt-выгрузкой (в папке архивов) появился bak файл в указанной нами для этого папке "X:\SqlBackups":
Эту выгрузку мы создали из скрипта и к ней не будут применяться опции для очистки старых копий.
Наконец, модифицируем скрипт, чтобы bak файл паковался в zip архив:
Sqlcmd -S "VOLK\SQLEXPRESS" -Q "BACKUP DATABASE [%base_ref%] TO DISK = N'x:SqlBackups/%stamp%.bak' WITH NOFORMAT, INIT, NAME = N'%stamp%', NOSKIP, REWIND, NOUNLOAD, STATS = 10" "%seven_zip%" a "X:\SqlBackups\%stamp%.zip" "x:\SqlBackups\%stamp%.bak" -tzip -mx7 del /q "x:\SqlBackups\%stamp%.bak" |
Вот теперь готово. За уровень сжатия отвечает параметр -mx. В примере уровень сжатия выставлен в значение 7, максимальный же равен 9.
Если нужно установить пароль на zip-архив (к примеру, secret) добавляем ключ -p:
Sqlcmd -S "VOLK\SQLEXPRESS" -Q "BACKUP DATABASE [%base_ref%] TO DISK = N'x:SqlBackups/%stamp%.bak' WITH NOFORMAT, INIT, NAME = N'%stamp%', NOSKIP, REWIND, NOUNLOAD, STATS = 10" "%seven_zip%" a "X:\SqlBackups\%stamp%.zip" "x:\SqlBackups\%stamp%.bak" -tzip -mx7 -p"secret" del /q "x:\SqlBackups\%stamp%.bak" |
Вот так легко и просто вы можете настроить выгрузку архивной копии sql-сервером перед обновлением базы из обновлятора.