Ошибка 'Запрос был прерван: Не удалось создать защищенный канал SSL/TLS'.

  оглавление  Почему перестала работать проверка на минимальную версию платформы

Обновлятор-1с. Sql backup & restore из скрипта

Введение

Обновлятор умеет выполнять архивацию и автоматическое восстановление (при неудачном обновлении) в том числе для клиент-серверных баз средствами СУБД: ссылка.

Но до сих пор средствами обновлятора нельзя было решить, например, такую задачу: сделать по расписанию выгрузку средствами СУБД из одной базы, а далее по расписанию сделать загрузку этой выгрузки уже в другую базу.

Теперь такая возможность появилась.

Решение

Если вы не работали со скриптами в обновляторе - сперва научитесь, это несложно.

Далее обратите внимание на вот этот пункт меню:

Нажмите на него и в скрипт вставится 2 следующие команды:

@sql_backup(
    file_path: "x:\work\1.sql",
    dbms_compression_level: 0,
    optimize_cluster_test: 0,
    pg_format: "plain"
)
@sql_restore(
    file_path: "x:\work\1.sql",
    decompression_password: "",
    recreate_base_in_cluster: 0,
    new_user_name: "",
    new_user_password: ""
)

Разберём эти команды и их параметры.

sql_backup

Команда sql_backup предназначена для выгрузки копии средствами СУБД в определенный файл для базы над которой выполняется скрипт.

ПараметрОписание
file_pathПолный путь к файлу, в который будет сделана выгрузка копии базы средствами СУБД. Перед началом выгрузки существующий файл будет удалён.
dbms_compression_levelСжатие выгрузки средствами СУБД. Для MS SQL значение 0 означает вариант "без сжатия", любое отличное от нуля значение означает сжатие (уровень сжатия здесь не задаётся). Для PostgreSQL значение может варьироваться от 0 до 9, обозначая уровень сжатия от варианта "без сжатия" до "максимальное сжатие" (подробнее см. документацию к утилите pg_dump, параметр 'compress').
optimize_cluster_testЗначение по умолчанию 0. Если установить 1, то обновлятор по возможности пропустит подключение к кластеру 1С, чтобы узнать имя базы на сервере СУБД, если оно ему уже известно по предыдущим подключениям к кластеру. Это позволит сократить время операции, а также устранить зависимость от работоспособности кластера 1С в момент архивации базы средствами СУБД. Важный момент. В дополнение к значению 1 для этой опции, необходимо в начале скрипта разместить команду @skip_any_connection_for_server_base() иначе при выполнении скрипта в самом начале в любом случае будет осуществлена попытка подключения к кластеру.
pg_formatЭтот параметр имеет смысл только для PostgreSQL. Возможные значения 'plain' и 'custom' (подробнее см. документацию к утилите pg_dump, параметр 'format').

sql_restore

Команда sql_restore предназначена для загрузки средствами СУБД копии из определенного файла в базу над которой выполняется скрипт.

ПараметрОписание
file_pathПолный путь к файлу из которого будет сделана загрузка копии базы средствами СУБД.
decompression_passwordЕсли file_path указывает на выгрузку сжатую внешним архиватором (в формате zip или 7z) с паролем - укажите этот пароль в этом параметре.
recreate_base_in_cluster0 - ничего не делать с базой в кластере при восстановлении, 1 - пересоздавать базу в кластере с теми же параметрами. Подробнее здесь. Значение по умолчанию 0.
new_user_nameИмя пользователя для авторизации в базе, если его нужно сменить после восстановления из архива (архив может быть от другой базы). По умолчанию пустая строка.
new_user_passwordПароль пользователя для авторизации в базе, если его нужно сменить после восстановления из архива (архив может быть от другой базы). По умолчанию пустая строка.

Пример использования

Предположим у нас есть 2 клиент-серверные базы 1c (формат СУБД PostgreSQL) с именами pos5 и pos6 и нам требуется ежедневно в час ночи выполнять копирование базы pos5 в базу pos6.

Для этого мы создаём для базы pos5 вот такой скрипт:

@sql_backup(
    file_path: "c:\bd.sql",
    dbms_compression_level: 0,
    optimize_cluster_test: 0,
    pg_format: "plain"
)

На панеле под редактором снимаем галки "Подключаться к базе", "Блокировать" и "Разблокировать".  Сохраняем этот скрипт (кнопка 'Сохранить' под редактором скриптов) в файл 'c:\save_to_sql.cmd'.

Далее создаём для базы pos6 вот такой скрипт:

@sql_restore(
    file_path: "c:\bd.sql",
    decompression_password: "",
    recreate_base_in_cluster: 0,
    new_user_name: "",
    new_user_password: ""
)

На панеле под редактором устанавливаем галки "Блокировать" и "Разблокировать". Сохраняем этот скрипт в файл 'c:\load_from_sql.cmd'.

Затем заходим в расписание задач и создаём там 2 задачи с типом операции "Запуск скрипта".

Для первой задачи указываем (справа от типа операции) наш файл 'c:\save_to_sql.cmd' и базу pos5.

Для второй задачи указываем файл 'c:\load_from_sql.cmd' и базу pos6.

Время запуска выстраиваем так, чтобы сначала запустилась первая задача, а спустя хотя бы 3 минуты вторая (вторая всё-равно будет ожидать завершение первой).

Готово. Первая задача выполнит скрипт для выгрузки средствами СУБД для базы pos5 в файл 'c:\bd.sql', а вторая задача выполнит скрипт для загрузки из этого файла копии в pos6.

С уважением, (преподаватель школы 1С программистов и разработчик обновлятора).



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

Нажмите одну из кнопок, чтобы поделиться:



Ошибка 'Запрос был прерван: Не удалось создать защищенный канал SSL/TLS'.

  оглавление  Почему перестала работать проверка на минимальную версию платформы