Страница 1 из 1

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

Добавлено: Чт ноя 18, 2010 13:52
alex_200
Приветствую!

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

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

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

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

Пробовал синхронизовать базы внутренними функциями Server Management Studio, однако видимо из за полнотекстового поиска, применяемого в базах Альта - сделать это не удалось.

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

Добавлено: Пт ноя 19, 2010 14:33
Nick
Мне кажется если в "Настройке SQL" переключить курсор с "клиентского" на "серверный" скорость загрузки улучшится (будут закачаны только видимые на экране строчки).

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

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

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

Добавлено: Пн ноя 22, 2010 15:32
AlexYu
Присоединясь к пожеланиям Alex_200. Вопрос репликации особенно актуален, когда декларанты работают в территориально удаленных подразделениях на разных постах и крайне желательно в этом случае иметь единую архивную базу SQL.
Вариант репликации
а) у каждого филиала своя папка
б) внутри структура папок сохраняется как в базе филиала
был бы идеален

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

Добавлено: Пн ноя 22, 2010 15:42
alex_200
Как я понимаю, сейчас у Альты проблема именно со структурой папок внутри филиала. До сих пор программа отслеживала изменени документа по GUID-у, в котором вроде как нет информации о местоположении этого документа. Программе просто не откуда брать информацию куда переносить документ.
А папки для каждого отдельного филиала можно приписать в инишнике вместе с остальными настройками клиента - тут непонятно почему до сих пор это не реализовано, я добиваюсь от Альты этого с апреля 2010г.

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

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

Задание дано по доработке утилиты репликации, надеюсь уже в этом году все будет.

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

Добавлено: Пн ноя 28, 2011 10:41
alex_200
Добрый день.

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

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

Может ввести некую опцию, не позволяющую реплицировать документы, которые изначально были созданы в конечной (центрально) базе?

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

Добавлено: Пн ноя 28, 2011 11:41
Sidyakin
Если декларацию скопировать программными средствами, то получится две декларации, т.к. у них будут разные GUIDы.

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

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

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

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

Хорошо, в SQL базе DOCS ввожу новое поле, подключаю к репликации.
А фильтр как накладывается? Может что то типа инструкции имеется для таких случаев?

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

Добавлено: Чт дек 01, 2011 09:54
Sidyakin
Инструкция в общем виде есть в хэлпе (replicator.chm). Текст фильтра пишется на T-SQL.

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