Собираем базы всех пользователей на сервере в общий список

оглавлениеВводная статья по обновлятору

Настраиваем выгрузку базы из sql-сервера в дополнение к dt

Статья устарела и требует переработки?

В этой статье я расскажу как для серверной базы настроить выгрузку из 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-сервером перед обновлением базы из обновлятора.

С уважением, (школа 1С программистов).

Подписывайтесь и получайте новые статьи и обработки на почту (не чаще 1 раза в неделю).

Вступайте в мою группу ВКонтакте, Одноклассниках, Facebook или Google+ — самые последние обработки, исправления ошибок в 1С, всё выкладываю там в первую очередь.

Владимир Милькин
Как помочь сайту: расскажите (кнопки поделиться ниже) о нём своим друзьям и коллегам. Сделайте это один раз и вы внесете существенный вклад в развитие сайта. На сайте нет рекламы, но чем больше людей им пользуются, тем больше сил у меня для его поддержки.



Собираем базы всех пользователей на сервере в общий список

оглавлениеВводная статья по обновлятору