Поддержка интеграции

AutosyncDB можно использовать для предоставления обновлений в различных случаях. Вы можете собрать пакет обновления базы данных и включить его в обновление версии приложения, которое будет отправлено клиенту для развертывания по месту. Так же его можно применить для развертывания изменений схемы базы данных на SaaS-сервере прямо из папки проекта, чтобы синхронизировать одну базу данных источник-версии со всеми клиентскими базами данных на сервере. Или добавить в свою DevOps-экосистему и иметь возможность, к примеру, настроить развертывание обновлений в ночное время (dev – test, test – production). Все такие операции выполняются как отдельные задания и доступны как в приложении, так и через командную строку.

Интерфейс командной строки

Командная строка для развертывания изменений схемы базы данных

AutosyncDB может быть запущен в обычном режиме как MDI-приложение, в диалоговом режиме как Мастер пакетов, или в фоновом режиме с или без взаимодействия с пользователем. Требуемый режим определяется на основе параметра-глагола командной строки и типа файла, который ему передали.

Интерфейс командной строки охватывает все доступные типы задач. Формат:

%ProgramFiles%\DreamTeam\AutosyncDB\AutosyncDB.exe [parameter1 [value1]] [parameter2 [value2]] ...

Параметры могут быть со значениями или без, в зависимости от конкретного параметра. Значения параметров должны быть экранированы, как того требует Windows. Помещайте значения с пробелами в "двойные кавычки". Экранируйте двойные кавычки в значениях обратной косой чертой перед ними (\").

Обычный режим

КатегорияПараметрСодержаниеОписание
Глагол Путь к файлу проекта, листинга SQL-скриптов, структуры базы данных, каталогуТо же, что и "/open", но без глагола.

В этом случае первым параметром должен быть путь к файлу
/openКомманда оболочки "Открыть"
/editПуть к файлу пакетаКомманда оболочки "Изменить". Распаковать проект из файла пакета и открыть по нему задание

Режим Мастера и фоновый режимы

Режим мастера пакетов доступен только для файлов пакетов обновлений баз данных и является для них режимом открытия по умолчанию. Он работает внутри как фоновый режим "/sync", но с удобным диалоговым интерфейсом и возможностью изменить некоторые основные настройки.

КатегорияПараметрСодержаниеОписание
Глагол Путь к файлу пакетаТо же, что и "/open", но без глагола.

В этом случае первым параметром должен быть путь к файлу
/openКомманда оболочки "Открыть". Выполнить задание по проекту в файле пакета в Мастере Пакетов
/syncПуть к файлу проекта или пакетаВыполнить задание по проекту в фоновом режиме
/texportПуть к файлу проектаЭкспорт структуры целевой базы данных в файл в фоновом режиме
/sexportПуть к файлу проектаЭкспорт структуры шаблонной базы данных в файл в фоновом режиме
/buildПуть к файлу проектаСборка пакета из проекта в фоновом режиме
Интерактивный режим [1] По умолчанию приложение может взаимодействовать с пользователем только для отображения сообщений об ошибках. Дополнительный параметр в этом случае не требуется
/quietЗапретить взаимодействие с пользователем
/interactiveРазрешить взаимодействие с пользователем
Окружение /taskНазвание заданияПроизвольное название задания

Имя задания и имя каталога вывода задания совпадают. Путь к проекту – известен. Используйте этот параметр, чтобы задать каталог вывода задания и иметь возможность определить полный путь к нему, а значит, и к результатам выполнения (журнал, скрипты, отчеты)
/notifyИд. процесса в системе или его названиеПроцесс для уведомлений.

Обычно это родительский процесс, который запустил задание и должен получать уведомления о ходе его выполнения и результатах.
/customidУникальная строкаПроизвольный идентификатор для задания и его процесса.

Может использоваться родительским процессом, чтобы определить, какое из запущенных заданий отправляет ему уведомление.
/owtaskПерезаписать (удалить) каталог вывода задания с именем, указанным в параметре "/task", если он уже существует

Этот параметр будет полезен, если вы запускаете задание несколько раз подряд или на постоянной основе и хотите перезаписывать предыдущие результаты. В противном случае, если каталог существует, задание завершиться по ошибке
/tempПуть каталогаКаталог для распаковки проекта из файла пакета
/pbuildПуть к файлу пакетаНастраиваемый путь к создаваемому файлу пакета
Параметры источника данных по умолчанию /dsИмя или адрес SQL ServerЗначение по умолчанию для "/tds" и "/sds", если они не указаны
/useridПользовательЗначение по умолчанию для "/tuserid" и "/suserid", если они не указаны
/pwdПарольЗначение по умолчанию для "/tpwd" и "/spwd", если они не указаны.

Если "User Id" указан без этого параметра, приложение попытается получить пароль из внутреннего хранилища, связанного с текущей учетной записью Windows процесса задания. Чтобы сделать это возможным, в приложении под этим пользователем и с такими же учетными данными в Форме подключения, следует запомнить пароль и успешно подключится хотя бы раз. Таким образом вы сможете избежать передачи пароля открытым текстом.
/ctimeoutСекундыТаймаут установки соединения с SQL Server
/dtimeoutСекундыТаймаут выполнения запроса (пакета) SQL
Целевая база данных /tselectПеред запуском выбрать целевую базу данных.

Этот параметр временно подавляет ограничения выбранного режима взаимодействия с пользователем и отображает Форму подключения
/tdefault [1]Разрешить использовать целевую базу данных, указанную в файле проекта.

Этот параметр просто служит мерой предосторожности, для избежания непреднамеренного выполнения задания на ошибочно выбранной базе данных.
/tdsИмя или адрес SQL ServerSQL-сервер целевой базы данных
/tuseridПользовательИдентификатор пользователя для подключения к серверу.

Если не указан этот параметр и "/userid", то для аутентификации будут использоваться данные текущей учетной записи Windows процесса задания (Integrated Security=true)
/tpwdПарольПароль пользователя для подключения к серверу.

Правила, описанные для "/pwd", применимы и к этому параметру
/tcatalogБаза данныхНазвание целевой базы данных
/tcsСтрока подключенияСтрока подключения целевой базы данных.

"Initial Catalog" должен быть установлен для правильного определения целевой базы данных
/tpathПуть к файлу структуры базы данных или пакетаПуть к файлу целевой базы данных
Шаблонная база данных /sselectПеред запуском выбрать шаблонную базу данных.

Этот параметр временно подавляет ограничения выбранного режима взаимодействия с пользователем и отображает Форму подключения
/sdsИмя или адрес SQL ServerSQL-сервер шаблонной базы данных
/suseridПользовательИдентификатор пользователя для подключения к серверу.

Если не указан этот параметр и "/userid", то для аутентификации будут использоваться данные текущей учетной записи Windows процесса задания (Integrated Security=true)
/spwdПарольПароль пользователя для подключения к серверу.

Правила, описанные для "/pwd", применимы и к этому параметру
/scatalogБаза данныхНазвание шаблонной базы данных
/scsСтрока подключенияСтрока подключения шаблонной базы данных.

"Initial Catalog" должен быть установлен для правильного определения шаблонной базы данных
/spathПуть к файлу структуры базы данных или пакетаПуть к файлу шаблонной базы данных

[1] - Не поддерживается Мастером пакетов, только для фонового режима.

Примеры

Запустить задание по проекту в фоновом режиме

"/sync" просто запускает задание в том виде, в котором оно сохранено в файле проекта. При подготовке задания для вызова в фоновом режиме обращайте внимание на настройки Выполнять скрипты и Создавать SQL-скрипт\ВЫПОЛНИТЬ, которые отвечают за включение применения изменений.

Одинаковые сервера, аутентификация Windows
/sync C:\Apps\Support\v5_0_193\Support.audbproj /quiet /ds dbs\SQL2019 /tcatalog support_work /scatalog support_v5_0_193
Одинаковые сервера, аутентификация SQL Server
/sync C:\Apps\Support\v5_0_193\Support.audbproj /quiet /ds dbs\SQL2019 /userid sa /pwd "secret 1" /tcatalog support_work /scatalog support_v5_0_193
Разные сервера, аутентификация SQL Server
/sync C:\Apps\Support\v5_0_193\Support.audbproj /quiet /tds dbs\SQL2019 /tuserid sa /tpwd "secret 1" /tcatalog support_work /sds dbtest\SQL2016 /suserid user1 /spwd "secret 2" /scatalog support_v5_0_193
Разные сервера, аутентификация SQL Server, с запомненными паролями
/sync C:\Apps\Support\v5_0_193\Support.audbproj /quiet /tds dbs\SQL2019 /tuserid sa /tcatalog support_work /sds dbtest\SQL2016 /suserid user1 /scatalog support_v5_0_193
Базы данных как в проекте, интерактивный
/sync C:\Apps\Support\v5_0_193\Support.audbproj /interactive /tdefault
Шаблонная база данных как в проекте, аутентификация Windows, название задания
/sync C:\Apps\Support\v5_0_193\Support.audbproj /quiet /task support-daily-202112080230 /tds dbs\SQL2019 /tcatalog db_support_test
Шаблонная база данных как в проекте, аутентификация Windows, ид. родительского процесса (1416), таймауты
/sync C:\Apps\Support\v5_0_193\Support.audbproj /quiet /task support-daily /owtask /notify 1416 /customid support-daily-2021-12-08 /tds dbs\sql2019 /tcatalog db_support_test /ctimeout 30 /dtimeout 14400
Выбор баз данных за пользователем, показывать только ошибки
/sync C:\Apps\Support\v5_0_193\Support.audbproj /tselect /sselect
Шаблонная база данных как в проекте, целевая база данных через строку подключения
/sync C:\Apps\Support\v5_0_193\Support.audbproj /quiet /task 0123456789 /tcs "Data Source=192.168.0.1,1433;Initial Catalog=support_work;Integrated Security=true;Pooling=false;Application Name=NightUpdateProc"
Проект из пакета обновления, ид. родительского процесса (4212)
/sync C:\Apps\Enterprise\v4.60\db-create.audbp /task 20211208091427 /notify 4212 /temp C:\Users\Administrator\AppData\Local\Temp\db-update /tds 192.168.0.193\SQL2016 /tcatalog DB_Enterprise_Test /tuserid sa /ctimeout 7 /dtimeout 120 /tpwd "secret 3"

Экспорт структуры целевой базы данных в файл

/texport C:\Apps\Enterprise\v4.60\db-create.audbproj /quiet /task 2021-12-07_17-03 /tpath D:\Updates\Enterprise\v4.60\db-create.audbp /tds 192.168.0.193\SQL2016 /tcatalog DB_Enterprise_Test /tuserid sa /tpwd "secret 1"

Сборка пакета обновления базы данных

Шаблонная база данных как в проекте, интерактивный
/build C:\Apps\Enterprise\v4.60\db-create.audbproj /interactive /pbuild C:\Apps\Enterprise\v4.60\db-create.audbp
Указание шаблонной базы данных для экспорта структуры
/build C:\Apps\Enterprise\v4.60\db-create.audbproj /quiet /pbuild C:\Apps\Enterprise\v4.60\db-create.audbp /sds 192.168.0.193\SQL2016 /scatalog DB_Enterprise_Test /suserid sa /spwd "secret 1"

Мастер пакетов

Автоматическое подключение к предустановленной целевой базе данных
/open C:\Apps\Enterprise\v4.60\db-create.audbp /tds 192.168.0.193\SQL2019 /tcatalog DB_Enterprise_Test

Коды выхода приложения

Диалоговый и фоновый режимы – это однозадачные режимы, в которых возвращаемый процессом в систему код сообщает о результате выполнения задания.

НазваниеЗначениеОписание
Стандартные коды ошибок
SUCCEEDED0x00Задание успешно завершено
UNEXPECTED0x8000FFFFПроизошла непредвиденная ошибка. Пожалуйста, перезайдите в приложение!
OUTOFMEMORY0x8007000EOut of memory!
HANDLED0x80131600Произошла ошибка приложения.
Коды ошибок, определенные приложением
CANNOT_UPGRADE_APP0xA000000AAutosyncDB не может обновить свои настройки. Существует другая запущенная версия приложения, либо этот запуск выполняется в фоновом режиме (полностью скрытый или в виде мастера). Закройте все остальные запущенные экземпляры приложения и попробуйте сначала запустить AutosyncDB обычным способом как приложение MDI.
OUT_OF_LICENSE0xA000000BЭта операция ограничена или не предусмотрена условиями текущей лицензии.
COULD_NOT_OBTAIN_PROCESS_FOR_NOTIFICATIONS0xA000000CНе удалось получить процесс для уведомлений.
NEWER_PROJECT_FORMAT0xA000000DФайл проекта был создан в другой версией этого приложения. Не все параметры применимы. Скорее всего, вам следует обновить приложение, чтобы иметь возможность работать с ним.
CONFIGURATION_REQUIRED0xA000000EAutosyncDB требует дополнительной настройки. Попробуйте сначала запустить приложение в обычном режиме.
COMMANDLINE_INVALID0xA0000014Неверные параметры коммандной строки!
COMMANDLINE_PATH_INVALID0xA0000015Неверный путь в аргументе командной строки.
COMMANDLINE_TASKNAME_INVALID0xA0000016Неверное имя задания в аргументе командной строки.
TASKNAME_EXISTS0xA000001EЗадача с таким именем уже существует.
CANCELED_BY_USER0xA000001FОтменено пользователем.
TARGET_NOT_SPECIFIED0xA0000020Целевая база данных не указана.
TARGET_NOT_CONNECTED0xA0000021Не удалось установить подключение к целевой базе данных.
TARGET_NOT_SUPPORTED0xA0000022Версия указанного SQL-сервера не поддерживается. Минимально необходимая версия MS SQL Server® 2005.
SOURCE_NOT_SPECIFIED0xA0000023Шаблонная база данных не указана.
SOURCE_NOT_CONNECTED0xA0000024Не удалось установить подключение к шаблонной базе данных.
SOURCE_NOT_SUPPORTED0xA0000025Версия указанного SQL-сервера не поддерживается. Минимально необходимая версия MS SQL Server® 2005.
Коды ошибок запуска задания
TASK_FAILED_TO_LOAD0xA0000032Не удалось загрузить проект.
TASK_FAILED_TO_START0xA0000033Не удалось запустить задание.
Коды ошибок завершения задания
TASK_DONE_WITH_ERRORS0xA0000034Задание было выполнено с ошибками.
TASK_FAILED_ERROR_LIMIT_EXCEEDED0xA0000035Не удалось выполнить задание до конца, потому что было превышено допустимое количество ошибок.
TASK_FAILED_ABORTED_BY_USER0xA0000036Задание было прервано пользователем.
TASK_FAILED0xA0000037Задание не выполнено.
Коды ошибок теста по утверждению целевой базы данных
TARGET_FAILED_TO_GET_APPROVAL0xA000003DНе удалось получить одобрение для целевой базы данных.
TARGET_WRONG_PRODUCT0xA000003EЦелевая база данных не принадлежит этому продукту.
TARGET_WRONG_PRODUCT_CONFIGURATION0xA000003FЦелевая база данных имеет другую конфигурацию продукта.
TARGET_IS_TOO_OLD0xA0000040Версия целевой базы данных ниже чем поддерживает это обновление.
TARGET_IS_TOO_NEW0xA0000041Версия целевой базы данных выше чем поддерживает это обновление.
TARGET_IS_NOT_VALID_FOR_OPERATION0xA0000042Целевая база данных не подходит для этого обновления.
TARGET_APPROVAL_CODE_70xA0000043Целевая база данных не подходит для этого обновления.
TARGET_APPROVAL_CODE_80xA0000044Целевая база данных не подходит для этого обновления.
TARGET_APPROVAL_CODE_90xA0000045Целевая база данных не подходит для этого обновления.
TARGET_APPROVAL_CODE_100xA0000046Целевая база данных не подходит для этого обновления.
TARGET_APPROVAL_CODE_110xA0000047Целевая база данных не подходит для этого обновления.
TARGET_APPROVAL_CODE_120xA0000048Целевая база данных не подходит для этого обновления.
TARGET_APPROVAL_CODE_130xA0000049Целевая база данных не подходит для этого обновления.
TARGET_APPROVAL_CODE_140xA000004AЦелевая база данных не подходит для этого обновления.
TARGET_APPROVAL_CODE_150xA000004BЦелевая база данных не подходит для этого обновления.

Взаимодействие с процессом задания

Для более глубокой интеграции также существует интерфейс на основе оконной процедуры, с помощью которого можно осуществлять межпроцессное взаимодействие между верхним окном клиентского приложения и процессом задания. Он использует функции SendMessage и PostMessage для отправки зарегистрированных оконных сообщений WM_AUTOSYNCDB_COMMAND, WM_AUTOSYNCDB_NOTIFY и стандартного сообщения WM_COPYDATA. Вы можете реализовать этот интерфейс в своем приложении обновления, чтобы получить возможность подписываться на определенные события от запущенных процессов заданий и останавливать их по требованию.

Подробнее обо всем этом вы можете узнать из демо-проекта "TMon". Это простое приложение на WinForms, которое поможет вам создавать правильную командную строку, показывает, как запускать, контролировать и получать уведомления от процессов заданий.
Исходный код TMon (включая TMon.exe),
Исходный код TMon.