Підтримка інтеграції

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.