• Обсуждения на сайте Альта-Софт

Репликация БД (ГТД Сервер)

вопросы по работе с программным обеспечением

Модераторы: Renat, Gala, alta_olg, expert, Lemur

Ответить
alex_200
Постоянный участник
Сообщения: 21
На форуме: c 13 ноя 2010
Сказал: 1 ед.
Получил: 0 ед.

Репликация БД (ГТД Сервер)

Сообщение alex_200 »

Приветствую!

Давно назрела проблема в функционировании данного модуля.
Если кто не знает - он позволяет автоматизированно централизовать (ну либо децентрализовать) документы, находящиеся в нескольких SQL базах данных Альты.
Как известно, при репликации все документы с "филиала" сыпятся в КОРЕНЬ базы SQL "сервера", при этом структура папок не сохраняется.

В настоящее время в корне базы SQL одних ГТД содержится более 7 тысяч. В результате очень замедляется старт Альты, когда программа обновляет список документов. Потом загружается окно курсов валют и история с списком документов повторяется.

Приходится вручную постоянно перемещать эту базу документов, что очень неудобно.

Раз нельзя сохранять структуру базы - почему бы не указать папку, куда все документы из филиала благополучно складывались? В настоящее время такой функции нет.

Пробовал синхронизовать базы внутренними функциями Server Management Studio, однако видимо из за полнотекстового поиска, применяемого в базах Альта - сделать это не удалось.
Аватара пользователя
Nick
Аксакал
Сообщения: 734
На форуме: c 02 фев 2005
Откуда: Альта-Софт, Программист
Сказал: 13 ед.
Получил: 124 ед.

Re: Репликация БД (ГТД Сервер)

Сообщение Nick »

Мне кажется если в "Настройке SQL" переключить курсор с "клиентского" на "серверный" скорость загрузки улучшится (будут закачаны только видимые на экране строчки).

Насчет репликации и папок - справедливо, будем делать.
Логично наверное по умолчанию сделать так:
а) у каждого филиала своя папка
б) внутри структура папок сохраняется как в базе филиала

Проблема, правда, получается в момент перехода со старого варианта (без папок) на новый (с папками).
Надо значит все сведения о структуре папок получить и существующие документы по ним развесить.
Но я думаю все это решим. Спасибо за конструктивное предложение!
AlexYu
Постоянный участник
Сообщения: 13
На форуме: c 16 ноя 2010
Сказал: 0 ед.
Получил: 0 ед.

Re: Репликация БД (ГТД Сервер)

Сообщение AlexYu »

Присоединясь к пожеланиям Alex_200. Вопрос репликации особенно актуален, когда декларанты работают в территориально удаленных подразделениях на разных постах и крайне желательно в этом случае иметь единую архивную базу SQL.
Вариант репликации
а) у каждого филиала своя папка
б) внутри структура папок сохраняется как в базе филиала
был бы идеален
alex_200
Постоянный участник
Сообщения: 21
На форуме: c 13 ноя 2010
Сказал: 1 ед.
Получил: 0 ед.

Re: Репликация БД (ГТД Сервер)

Сообщение alex_200 »

Как я понимаю, сейчас у Альты проблема именно со структурой папок внутри филиала. До сих пор программа отслеживала изменени документа по GUID-у, в котором вроде как нет информации о местоположении этого документа. Программе просто не откуда брать информацию куда переносить документ.
А папки для каждого отдельного филиала можно приписать в инишнике вместе с остальными настройками клиента - тут непонятно почему до сих пор это не реализовано, я добиваюсь от Альты этого с апреля 2010г.
Аватара пользователя
Nick
Аксакал
Сообщения: 734
На форуме: c 02 фев 2005
Откуда: Альта-Софт, Программист
Сказал: 13 ед.
Получил: 124 ед.

Re: Репликация БД (ГТД Сервер)

Сообщение Nick »

Каждому документу соответствует запись в базе Docs у которой есть GUID документа, а еще есть GUID папки где он сейчас лежит. Для корня - специальный нулевой GUID, для остальных папок - у каждой свой уникальный. Так что в смысле структуры БД препятствий для "репликации с папками" никаких нет.

Задание дано по доработке утилиты репликации, надеюсь уже в этом году все будет.
alex_200
Постоянный участник
Сообщения: 21
На форуме: c 13 ноя 2010
Сказал: 1 ед.
Получил: 0 ед.

Re: Репликация БД (ГТД Сервер)

Сообщение alex_200 »

Добрый день.

Возможно ли предусмотреть в процедуре Репликации "защиту от дурака"?

Столкнулся с такой проблемой: В центральной SQL базе была сделана декларация и подана по ЭД2 на пост. Во время оформления (декларация еще не выпущена) какой то умник скопировал эту декларашку в филиальную SQL базу. Естественно, декларашка реплицировалась обратно в центральную базу, но уже без ЭД2 статуса.

Может ввести некую опцию, не позволяющую реплицировать документы, которые изначально были созданы в конечной (центрально) базе?
Sidyakin
Постоянный участник
Сообщения: 22
На форуме: c 22 ноя 2010
Сказал: 0 ед.
Получил: 2 ед.

Re: Репликация БД (ГТД Сервер)

Сообщение Sidyakin »

Если декларацию скопировать программными средствами, то получится две декларации, т.к. у них будут разные GUIDы.

Похоже на то, что она все-таки реплицировалась в филиальную базу "по-честному", а вот уже там по какой то причине (сбой?) ЭД-статус сбросился и декларация снова реплицировалась в центральную базу уже без этого статуса.

По защите "от дурака" можно сделать следующее. В центральной базе в таблице Docs ввести новое поле, н-р gtd_owner, и задать его значение по умолчанию 1. Аналогично сделать в филиальной базе, но значение по умолчанию уже сделать 2. Далее настроить репликацию - указать, что это новое поле участвует в репликации. В результате получится, что каждая новая ГТД будет создаваться со своим признаком принадлежности к тому или иному филиалу, и после репликации этот признак будет сохраняться.
Ну а затем уже можно будет наложить фильтр в центральной базе, где и указать, что при отправке использовать gtd_owner <> 1 (т.е. передавать все, кроме созданного в центральной базе)
alex_200
Постоянный участник
Сообщения: 21
На форуме: c 13 ноя 2010
Сказал: 1 ед.
Получил: 0 ед.

Re: Репликация БД (ГТД Сервер)

Сообщение alex_200 »

Декларацию руками выгрузили во внутреннем формате Альта Виндус и передали на филиал. Уж не знаю, что им там в ней понадобилось. А затем уже на филиале после загрузки в SQL она обратно среплицировалась в центральную базу.

Хорошо, в SQL базе DOCS ввожу новое поле, подключаю к репликации.
А фильтр как накладывается? Может что то типа инструкции имеется для таких случаев?
Sidyakin
Постоянный участник
Сообщения: 22
На форуме: c 22 ноя 2010
Сказал: 0 ед.
Получил: 2 ед.

Re: Репликация БД (ГТД Сервер)

Сообщение Sidyakin »

Инструкция в общем виде есть в хэлпе (replicator.chm). Текст фильтра пишется на T-SQL.

Нужно зайти в конфигуратор, перейти на закладку Таблицы, выбрать таблицу Docs и в контекстном меню нажать Фильтры.
Для того, чтобы данные, введенные на сервере, не реплицировались в филиал, то в окне "Получение данных с сервера" нужно ввести
where gtd_owner <> 1
Естественно, поле gtd_owner с указанным значением по умолчанию уже должно быть заведено в центральной базе.
Ответить