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 Server | SQL-сервер целевой базы данных | |
/tuserid | Пользователь | Идентификатор пользователя для подключения к серверу. Если не указан этот параметр и "/userid", то для аутентификации будут использоваться данные текущей учетной записи Windows процесса задания (Integrated Security=true) | |
/tpwd | Пароль | Пароль пользователя для подключения к серверу. Правила, описанные для "/pwd", применимы и к этому параметру | |
/tcatalog | База данных | Название целевой базы данных | |
/tcs | Строка подключения | Строка подключения целевой базы данных. "Initial Catalog" должен быть установлен для правильного определения целевой базы данных | |
/tpath | Путь к файлу структуры базы данных или пакета | Путь к файлу целевой базы данных | |
Шаблонная база данных | /sselect | Перед запуском выбрать шаблонную базу данных. Этот параметр временно подавляет ограничения выбранного режима взаимодействия с пользователем и отображает Форму подключения | |
/sds | Имя или адрес SQL Server | SQL-сервер шаблонной базы данных | |
/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
Коды выхода приложения
Диалоговый и фоновый режимы – это однозадачные режимы, в которых возвращаемый процессом в систему код сообщает о результате выполнения задания.
Название | Значение | Описание |
---|---|---|
Стандартные коды ошибок | ||
SUCCEEDED | 0x00 | Задание успешно завершено |
UNEXPECTED | 0x8000FFFF | Произошла непредвиденная ошибка. Пожалуйста, перезайдите в приложение! |
OUTOFMEMORY | 0x8007000E | Out of memory! |
HANDLED | 0x80131600 | Произошла ошибка приложения. |
Коды ошибок, определенные приложением | ||
CANNOT_UPGRADE_APP | 0xA000000A | AutosyncDB не может обновить свои настройки. Существует другая запущенная версия приложения, либо этот запуск выполняется в фоновом режиме (полностью скрытый или в виде мастера). Закройте все остальные запущенные экземпляры приложения и попробуйте сначала запустить AutosyncDB обычным способом как приложение MDI. |
OUT_OF_LICENSE | 0xA000000B | Эта операция ограничена или не предусмотрена условиями текущей лицензии. |
COULD_NOT_OBTAIN_PROCESS_FOR_NOTIFICATIONS | 0xA000000C | Не удалось получить процесс для уведомлений. |
NEWER_PROJECT_FORMAT | 0xA000000D | Файл проекта был создан в другой версией этого приложения. Не все параметры применимы. Скорее всего, вам следует обновить приложение, чтобы иметь возможность работать с ним. |
CONFIGURATION_REQUIRED | 0xA000000E | AutosyncDB требует дополнительной настройки. Попробуйте сначала запустить приложение в обычном режиме. |
COMMANDLINE_INVALID | 0xA0000014 | Неверные параметры коммандной строки! |
COMMANDLINE_PATH_INVALID | 0xA0000015 | Неверный путь в аргументе командной строки. |
COMMANDLINE_TASKNAME_INVALID | 0xA0000016 | Неверное имя задания в аргументе командной строки. |
TASKNAME_EXISTS | 0xA000001E | Задача с таким именем уже существует. |
CANCELED_BY_USER | 0xA000001F | Отменено пользователем. |
TARGET_NOT_SPECIFIED | 0xA0000020 | Целевая база данных не указана. |
TARGET_NOT_CONNECTED | 0xA0000021 | Не удалось установить подключение к целевой базе данных. |
TARGET_NOT_SUPPORTED | 0xA0000022 | Версия указанного SQL-сервера не поддерживается. Минимально необходимая версия MS SQL Server® 2005. |
SOURCE_NOT_SPECIFIED | 0xA0000023 | Шаблонная база данных не указана. |
SOURCE_NOT_CONNECTED | 0xA0000024 | Не удалось установить подключение к шаблонной базе данных. |
SOURCE_NOT_SUPPORTED | 0xA0000025 | Версия указанного SQL-сервера не поддерживается. Минимально необходимая версия MS SQL Server® 2005. |
Коды ошибок запуска задания | ||
TASK_FAILED_TO_LOAD | 0xA0000032 | Не удалось загрузить проект. |
TASK_FAILED_TO_START | 0xA0000033 | Не удалось запустить задание. |
Коды ошибок завершения задания | ||
TASK_DONE_WITH_ERRORS | 0xA0000034 | Задание было выполнено с ошибками. |
TASK_FAILED_ERROR_LIMIT_EXCEEDED | 0xA0000035 | Не удалось выполнить задание до конца, потому что было превышено допустимое количество ошибок. |
TASK_FAILED_ABORTED_BY_USER | 0xA0000036 | Задание было прервано пользователем. |
TASK_FAILED | 0xA0000037 | Задание не выполнено. |
Коды ошибок теста по утверждению целевой базы данных | ||
TARGET_FAILED_TO_GET_APPROVAL | 0xA000003D | Не удалось получить одобрение для целевой базы данных. |
TARGET_WRONG_PRODUCT | 0xA000003E | Целевая база данных не принадлежит этому продукту. |
TARGET_WRONG_PRODUCT_CONFIGURATION | 0xA000003F | Целевая база данных имеет другую конфигурацию продукта. |
TARGET_IS_TOO_OLD | 0xA0000040 | Версия целевой базы данных ниже чем поддерживает это обновление. |
TARGET_IS_TOO_NEW | 0xA0000041 | Версия целевой базы данных выше чем поддерживает это обновление. |
TARGET_IS_NOT_VALID_FOR_OPERATION | 0xA0000042 | Целевая база данных не подходит для этого обновления. |
TARGET_APPROVAL_CODE_7 | 0xA0000043 | Целевая база данных не подходит для этого обновления. |
TARGET_APPROVAL_CODE_8 | 0xA0000044 | Целевая база данных не подходит для этого обновления. |
TARGET_APPROVAL_CODE_9 | 0xA0000045 | Целевая база данных не подходит для этого обновления. |
TARGET_APPROVAL_CODE_10 | 0xA0000046 | Целевая база данных не подходит для этого обновления. |
TARGET_APPROVAL_CODE_11 | 0xA0000047 | Целевая база данных не подходит для этого обновления. |
TARGET_APPROVAL_CODE_12 | 0xA0000048 | Целевая база данных не подходит для этого обновления. |
TARGET_APPROVAL_CODE_13 | 0xA0000049 | Целевая база данных не подходит для этого обновления. |
TARGET_APPROVAL_CODE_14 | 0xA000004A | Целевая база данных не подходит для этого обновления. |
TARGET_APPROVAL_CODE_15 | 0xA000004B | Целевая база данных не подходит для этого обновления. |
Взаимодействие с процессом задания
Для более глубокой интеграции также существует интерфейс на основе оконной процедуры,
с помощью которого можно осуществлять межпроцессное взаимодействие между верхним окном клиентского приложения и процессом задания.
Он использует функции SendMessage
и PostMessage
для отправки зарегистрированных оконных сообщений
WM_AUTOSYNCDB_COMMAND
, WM_AUTOSYNCDB_NOTIFY
и стандартного сообщения WM_COPYDATA
.
Вы можете реализовать этот интерфейс в своем приложении обновления, чтобы получить возможность подписываться на определенные события
от запущенных процессов заданий и останавливать их по требованию.
Подробнее обо всем этом вы можете узнать из демо-проекта "TMon".
Это простое приложение на WinForms, которое поможет вам создавать правильную командную строку,
показывает, как запускать, контролировать и получать уведомления от процессов заданий.
Исходный код TMon (включая TMon.exe),
Исходный код TMon.