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.