2013-08-28 5 views
1

У меня есть две таблицы в разных базах данных. Таблицы точно одинаковы (одно имя, одинаковые столбцы и т. Д.). Мой вопрос в том, как я могу получить новые строки из родительской таблицы и сохранить в дочернюю таблицу? Мне нужно сделать это нажатием кнопки click_event. Спасибо заранее.Как синхронизировать две таблицы, хранящиеся в разных базах данных

+0

Покажите нам, как выглядят структуры таблицы. Какие РСУБД вы используете. Один способ обновления или в обоих направлениях? –

+0

Мне нужно сделать это в обоих направлениях. Обновление должно основываться на поле id. Какие-либо предложения? –

+0

Вы хотите, чтобы таблицы всегда были синхронизированы или только определенные строки в определенное время? – STW

ответ

5

Есть несколько технологий, специально для этого типа сценария:

  • SQL Replication
    • Поддержка однонаправленного или двунаправленного синхронизации
  • SSIS
    • позволяет определить отображение данных , а также преобразования и прикрепить другой код к е процесс легко
  • Linked-servers
    • Позволяет запрашивать базы данных и таблицы на удаленных серверах, как будто они являются частью локальной базы данных. Очень прост в установке (просто вызовите exec sp_addlinkedserver) и один раз определяется не использует ничего, кроме простой старый SQL

Поскольку вы упоминаете это должно происходить на кнопке щелчок, то я предлагаю вам использовать связанные серверов в хранимой процедуре - они являются самым простым вариантом. SSIS также будет подходящим, вам нужно будет выполнить пакет нажатием кнопки.

0

(длинное и неоптимальное решение) получить все идентификаторы из первой таблицы. получить все идентификаторы из второй таблицы. пропустите первый массив и удалите все элементы, которые находятся во втором.

+0

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

+0

Этот метод вызовет головные боли, я не рекомендую его. Что произойдет, если у вас есть 100 записей в каждой таблице, а пользователь добавляет еще один к каждому? Тогда вам придется сравнивать данные в каждой записи, чтобы получить различия, но что произойдет, если пользователь изменит данные ... Я мог бы продолжить. Есть несколько решений этой проблемы, поскольку @STW – Simon

1

Решил сам, используя Linked Server. Here - это простой учебник о том, как создать связанный сервер. После создания связанного сервера, мы можем запросить его следующим образом:

select * from LinkedServerName.DatabaseName.dbo.TableName 

Работы просто отлично !!

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