Приветствую!
Давно назрела проблема в функционировании данного модуля.
Если кто не знает - он позволяет автоматизированно централизовать (ну либо децентрализовать) документы, находящиеся в нескольких SQL базах данных Альты.
Как известно, при репликации все документы с "филиала" сыпятся в КОРЕНЬ базы SQL "сервера", при этом структура папок не сохраняется.
В настоящее время в корне базы SQL одних ГТД содержится более 7 тысяч. В результате очень замедляется старт Альты, когда программа обновляет список документов. Потом загружается окно курсов валют и история с списком документов повторяется.
Приходится вручную постоянно перемещать эту базу документов, что очень неудобно.
Раз нельзя сохранять структуру базы - почему бы не указать папку, куда все документы из филиала благополучно складывались? В настоящее время такой функции нет.
Пробовал синхронизовать базы внутренними функциями Server Management Studio, однако видимо из за полнотекстового поиска, применяемого в базах Альта - сделать это не удалось.
-
-
Обсуждения на сайте Альта-Софт
-
Репликация БД (ГТД Сервер)
Модераторы: Renat, Gala, alta_olg, expert, Lemur
- Nick
- Аксакал
- Сообщения: 734
- На форуме: c 02 фев 2005
- Откуда: Альта-Софт, Программист
Сказал: 13 ед.
Получил: 124 ед.
Получил: 124 ед.
Re: Репликация БД (ГТД Сервер)
Мне кажется если в "Настройке SQL" переключить курсор с "клиентского" на "серверный" скорость загрузки улучшится (будут закачаны только видимые на экране строчки).
Насчет репликации и папок - справедливо, будем делать.
Логично наверное по умолчанию сделать так:
а) у каждого филиала своя папка
б) внутри структура папок сохраняется как в базе филиала
Проблема, правда, получается в момент перехода со старого варианта (без папок) на новый (с папками).
Надо значит все сведения о структуре папок получить и существующие документы по ним развесить.
Но я думаю все это решим. Спасибо за конструктивное предложение!
Насчет репликации и папок - справедливо, будем делать.
Логично наверное по умолчанию сделать так:
а) у каждого филиала своя папка
б) внутри структура папок сохраняется как в базе филиала
Проблема, правда, получается в момент перехода со старого варианта (без папок) на новый (с папками).
Надо значит все сведения о структуре папок получить и существующие документы по ним развесить.
Но я думаю все это решим. Спасибо за конструктивное предложение!
Re: Репликация БД (ГТД Сервер)
Присоединясь к пожеланиям Alex_200. Вопрос репликации особенно актуален, когда декларанты работают в территориально удаленных подразделениях на разных постах и крайне желательно в этом случае иметь единую архивную базу SQL.
Вариант репликации
а) у каждого филиала своя папка
б) внутри структура папок сохраняется как в базе филиала
был бы идеален
Вариант репликации
а) у каждого филиала своя папка
б) внутри структура папок сохраняется как в базе филиала
был бы идеален
Re: Репликация БД (ГТД Сервер)
Как я понимаю, сейчас у Альты проблема именно со структурой папок внутри филиала. До сих пор программа отслеживала изменени документа по GUID-у, в котором вроде как нет информации о местоположении этого документа. Программе просто не откуда брать информацию куда переносить документ.
А папки для каждого отдельного филиала можно приписать в инишнике вместе с остальными настройками клиента - тут непонятно почему до сих пор это не реализовано, я добиваюсь от Альты этого с апреля 2010г.
А папки для каждого отдельного филиала можно приписать в инишнике вместе с остальными настройками клиента - тут непонятно почему до сих пор это не реализовано, я добиваюсь от Альты этого с апреля 2010г.
- Nick
- Аксакал
- Сообщения: 734
- На форуме: c 02 фев 2005
- Откуда: Альта-Софт, Программист
Сказал: 13 ед.
Получил: 124 ед.
Получил: 124 ед.
Re: Репликация БД (ГТД Сервер)
Каждому документу соответствует запись в базе Docs у которой есть GUID документа, а еще есть GUID папки где он сейчас лежит. Для корня - специальный нулевой GUID, для остальных папок - у каждой свой уникальный. Так что в смысле структуры БД препятствий для "репликации с папками" никаких нет.
Задание дано по доработке утилиты репликации, надеюсь уже в этом году все будет.
Задание дано по доработке утилиты репликации, надеюсь уже в этом году все будет.
Re: Репликация БД (ГТД Сервер)
Добрый день.
Возможно ли предусмотреть в процедуре Репликации "защиту от дурака"?
Столкнулся с такой проблемой: В центральной SQL базе была сделана декларация и подана по ЭД2 на пост. Во время оформления (декларация еще не выпущена) какой то умник скопировал эту декларашку в филиальную SQL базу. Естественно, декларашка реплицировалась обратно в центральную базу, но уже без ЭД2 статуса.
Может ввести некую опцию, не позволяющую реплицировать документы, которые изначально были созданы в конечной (центрально) базе?
Возможно ли предусмотреть в процедуре Репликации "защиту от дурака"?
Столкнулся с такой проблемой: В центральной SQL базе была сделана декларация и подана по ЭД2 на пост. Во время оформления (декларация еще не выпущена) какой то умник скопировал эту декларашку в филиальную SQL базу. Естественно, декларашка реплицировалась обратно в центральную базу, но уже без ЭД2 статуса.
Может ввести некую опцию, не позволяющую реплицировать документы, которые изначально были созданы в конечной (центрально) базе?
Re: Репликация БД (ГТД Сервер)
Если декларацию скопировать программными средствами, то получится две декларации, т.к. у них будут разные GUIDы.
Похоже на то, что она все-таки реплицировалась в филиальную базу "по-честному", а вот уже там по какой то причине (сбой?) ЭД-статус сбросился и декларация снова реплицировалась в центральную базу уже без этого статуса.
По защите "от дурака" можно сделать следующее. В центральной базе в таблице Docs ввести новое поле, н-р gtd_owner, и задать его значение по умолчанию 1. Аналогично сделать в филиальной базе, но значение по умолчанию уже сделать 2. Далее настроить репликацию - указать, что это новое поле участвует в репликации. В результате получится, что каждая новая ГТД будет создаваться со своим признаком принадлежности к тому или иному филиалу, и после репликации этот признак будет сохраняться.
Ну а затем уже можно будет наложить фильтр в центральной базе, где и указать, что при отправке использовать gtd_owner <> 1 (т.е. передавать все, кроме созданного в центральной базе)
Похоже на то, что она все-таки реплицировалась в филиальную базу "по-честному", а вот уже там по какой то причине (сбой?) ЭД-статус сбросился и декларация снова реплицировалась в центральную базу уже без этого статуса.
По защите "от дурака" можно сделать следующее. В центральной базе в таблице Docs ввести новое поле, н-р gtd_owner, и задать его значение по умолчанию 1. Аналогично сделать в филиальной базе, но значение по умолчанию уже сделать 2. Далее настроить репликацию - указать, что это новое поле участвует в репликации. В результате получится, что каждая новая ГТД будет создаваться со своим признаком принадлежности к тому или иному филиалу, и после репликации этот признак будет сохраняться.
Ну а затем уже можно будет наложить фильтр в центральной базе, где и указать, что при отправке использовать gtd_owner <> 1 (т.е. передавать все, кроме созданного в центральной базе)
Re: Репликация БД (ГТД Сервер)
Декларацию руками выгрузили во внутреннем формате Альта Виндус и передали на филиал. Уж не знаю, что им там в ней понадобилось. А затем уже на филиале после загрузки в SQL она обратно среплицировалась в центральную базу.
Хорошо, в SQL базе DOCS ввожу новое поле, подключаю к репликации.
А фильтр как накладывается? Может что то типа инструкции имеется для таких случаев?
Хорошо, в SQL базе DOCS ввожу новое поле, подключаю к репликации.
А фильтр как накладывается? Может что то типа инструкции имеется для таких случаев?
Re: Репликация БД (ГТД Сервер)
Инструкция в общем виде есть в хэлпе (replicator.chm). Текст фильтра пишется на T-SQL.
Нужно зайти в конфигуратор, перейти на закладку Таблицы, выбрать таблицу Docs и в контекстном меню нажать Фильтры.
Для того, чтобы данные, введенные на сервере, не реплицировались в филиал, то в окне "Получение данных с сервера" нужно ввести
where gtd_owner <> 1
Естественно, поле gtd_owner с указанным значением по умолчанию уже должно быть заведено в центральной базе.
Нужно зайти в конфигуратор, перейти на закладку Таблицы, выбрать таблицу Docs и в контекстном меню нажать Фильтры.
Для того, чтобы данные, введенные на сервере, не реплицировались в филиал, то в окне "Получение данных с сервера" нужно ввести
where gtd_owner <> 1
Естественно, поле gtd_owner с указанным значением по умолчанию уже должно быть заведено в центральной базе.