После включения настройки, утилита начнет работать и брать данные из облачной БД SQL, а так же отправлять их.
Изменения отслеживаются путем ревизий.
При первой синхронизации, после создания БД все подключения из локальной БД будут перенесены в облачную, посредством магической телепортации.
Подключать новых клиентов к БД необходимо с пустой БД, что бы они не сломали БД MSSQL. Все данные будут выгружены из MSSQL в локальную БД новой машины.
Обмен с облачной БД происходит раз в 15 секунд.
Ограничить работу с БД можно средствами самого SQL, можно выдать пользователю права только на чтение БД.
ВНИМАНИЕ! Если не получается подключится к БД, попробуйте подключиться к БД через SSMS!
При первом создании локальной БД без подключения к серверу MSSQL, создается пустая БД в которой задана по умолчанию ревизия 1
При создании облачной БД MSSQL будет создана БД в которой установлена ревизия -1, после создания БД MSSQL утилиту лучше всего перезапустить!
Шаги подключения к MSSQL:
2. Нажимаем на тумблер SQL Database
3. Появляется настройки подключения к БД SQL
Remote database - Удаленная БД, т.е подключение будет происходить по ip адресу подключения.
SQL Custom Settings - Если у вас специфические настройки подключения, всегда можно ввести полностью свой тип подключения к БД SQL, примеры тут - https://www.connectionstrings.com/sql-server/
Trusted connection - добавляет флаг yes если включен или no если выключен
Read Only Database - Отключает функции добавления и изменения подключений.
Строка удаленного подключения:
user id = login; password=password;server=127.0.0.1; Trusted_Connection=no;
Строка локального подключения:
Server = 127.0.0.1; Database = master; Integrated Security = True;
Имя БД - Имя той БД которая будет создана, его вводить обязательно!
Адрес - ip для подключения
Логин - логин SQL
Пароль - пароль SQL
Перед подключением к SQL попробуйте подключится к БД через SQL Server Management Studio (SSMS)
Если не подключается проверьте настройки подключения к SQL.
4. После успешного подключения к SQL нужно будет что бы утилита создала БД, она спросит об этом:
Создание БД может занять пару минут, после создания будет показано сообщение:
5. После этого нужно перезагрузить утилиту. В течении минуты все подключения из локальной БД будут перенесены в облачную БД MSSQL:
Логи лежат по пути: %appdata%\CLEAR_bat\Logs
В логах будет следующее сообщение:
[31.01.2023 13:39:57][2mix][Replication] INFO FIRST SYNC SQL: Start first synchronisation from revision -1
Оно говорит о том что запущена первая синхронизация локальной БД с облачной БД MSSQL.
После этого через несколько секунд или минут (в зависимости от размера БД должно быть следующее сообщение в логах:
[31.01.2023 13:42:21][2mix][Replication] INFO Revision updated successfully
[31.01.2023 13:42:21][2mix][Replication] INFO Downloaded: 0
[31.01.2023 13:42:21][2mix][Replication] INFO Uploaded: 615
[31.01.2023 13:42:21][2mix][Replication] INFO Total: 615
Это означает что репликация прошла успешно и можно работать. Как видим, у меня это заняло почти 3 минуты, поскольку БД большая.
Если у вас не подключается или не удается корректно настроить БД, то попробуйте выключить SQL, закрыть утилиту, и попробовать снова.
Функционал еще сырой, и толком не обкатан! Любые баги, и ошибки прошу писать мне в телеграм.
Нет связи с БД SQL, или ошибка соединения. Смотрите логи.
Идет синхронизация с БД, и проверка связи. Идет обмен данными.
Связь с БД есть, обмен прошел.
В локальной БД есть ревизия у самого подключения в таблице Entities:
revision - ревизия самого подключения.
А так же в таблице version есть две строчки:
LocalRevision - локальная ревизия БД
ServerRevision - облачная ревизия MSSQL
В БД SQL есть ревизия подключений:
revision - ревизия самого подключения
А так же в таблице DBVersion есть строчка с ревизией БД:
revision - ревизия БД
Для поднятия ревизии у подключения что бы оно выгрузилось в SQL можно использовать скрипт:
update Entities
SET revision = (select LocalRevision from version)+1;
update version
SET LocalRevision = (select LocalRevision from version)+1
Where id = ‘0d686567-8898-49d7-8e05-eec9ef6f267f’; -- id подключения
Для поднятия ревизии в БД SQL можно использовать скрипт:
update Entities
SET revision = (select revision from DBVersion)+1;
update DBVersion
SET revision = (select revision from DBVersion)+1
Where id = ‘0d686567-8898-49d7-8e05-eec9ef6f267f’; -- id подключения
После обновления со старых версий, на версию выше 6.4.1.10 не проходит обмен с SQL. Необходимо в настройках включить DEBUG режим, и посмотреть на ошибку в логах.
Если в логах ошибка вида:
[**.**.**** **:**:**][Администратор][INFO][Replication] GET FROM SQL: Revision update from 1 to 1740 started
[**.**.**** **:**:**][Администратор][DEBUG][Replication] Строка не распознана как действительное логическое значение.
в System.Boolean.Parse(String value)
в CLEAR.bat.SQLWorker.GetListAndReturn()
в CLEAR.bat.DatabaseSync.StartSync()
Обязательно убедится что в стектрейсе есть - System.Boolean.Parse(String value)
Это означает что в БД есть значения deleted в которых не проставлено значение, необходимо выполнить скрипт на БД SQL:
update Entities SET
deleted = 'false'
where deleted != 'True' AND deleted != 'False' AND deleted != 'true' AND deleted != 'false';
После этого перезагрузить утилиты.