0

Я пишу двухстороннюю серверную - репликацию Firebird с приложением C# и сталкиваюсь со следующей проблемой. У меня есть таблица журналов с именем таблицы pk записи и типом выполнения запроса на нем. Например, если в таблице продаж была вставлена ​​строка с ключом primery из 4, будет имя таблицы, pk записи и вставка. Моя идея заключается в том, что инструкция является вставкой, чтобы принимать каждое значение из базы данных клиента и вставлять ее в сервер. Как это сделать и как это сделать, чтобы он мог быстро работать. Должен ли я делить каждую запись по таблицам и выбирать все нереплицированные записи из этой таблицы или есть другой способ.Необходима помощь репликации Firebird

Кстати, я использовал метод, в котором каждый запрошенный запрос записывается в файле fild в таблице журнала, но это делает невозможным добавление столбцов в таблицу, поскольку запрос будет неправильным.

ответ

0

Возможно, вы захотите начать с некоторой информации из онлайн-документации IBExpert.net. В этой статье объясняются основы репликации базы данных с помощью Firebird: http://ibexpert.net/ibe/index.php?n=Doc.BidirectionalReplicationForInterBaseAndFirebird
Кроме того, IBExpert KG предлагает собственные решения для репликации. Вы можете просмотреть их часто задаваемые вопросы о репликации или получить информацию по электронной почте. http://ibexpert.net/ibe/index.php?n=Doc.ReplicationFAQs

+0

Здравствуйте, MBDev, Благодарим вас за ответ. Метод репликации, описанный на сайте IBE, представляет собой точную копию текущего механизма репликации. Проблема заключается в том, что он хранит запрос execu I U D в таблице LOG и затем выполняет его на сервере DB. Таким образом, если вы добавите столбец в таблицу, этот запрос не будет работать. Он скажет, что в этой таблице больше столбцов. То же самое, если я хочу изменить имя поля или удалить его. Вот почему я хочу иметь возможность записывать запись из базы данных cliend и копировать ее на сервер. Мне нужна помощь, особенно для этой схемы. – DrCIH

+0

Добавление coulmn не должно быть проблемой. Кроме того, обновление coulmn возможно, но не рекомендуется менять имена полей. ** Мои подсказки: ** ** 1. ** Просто добавьте необходимые поля в ваш SQL. Например: if (new.FIELD <> null), тогда SQL = SQL || '....'. Оператор Update должен содержать только измененные поля и идентификатор. ** 2. ** После выполнения метаинформации добавьте ваш SQL в таблицу операций репликации. Например, такие SQL, как «ALTER TABLE ....». Этот метод позволяет передавать мета-изменения в правильном порядке. ** 3. ** Избегайте удаления таблиц и полей. –

+0

** 4. ** Постарайтесь, чтобы ваши клиенты синхронизировались. Иногда эта цель является реальной проблемой, но она делает мета-изменения простыми. –

Смежные вопросы