Bulkcopy обновленных и вновь вставленных данных между различными базами данных с использованием C # - PullRequest
0 голосов
/ 09 января 2011

Это мой первый пост .. У меня есть 2 базы данных SQL Server, расположенные на разных серверах ..

Допустим, SDT для исходной таблицы данных из исходной базы данных SDB в DDT (таблица данных назначения) для базы данных DDB

Я использую C # для массового копирования из SDT в DDT ..

Мой код примерно такой:

sqlcommand = "Delete * from DDT where locID = @LocIDParam" // @LocIDParam is the parameter for a specific location // 
then bulk copy "Select * from SDT where locID = @LocIDParam" // the steps are well known.. 

Я просто не хочу вдаваться в бесполезные подробности ..

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

Есть ли в любом случае массовое копирование только обновленных записей из SDT в DDT, а также вставка новых ???

Как вы думаете, использование триггера SQL для обновленных и вновь вставленных данных - лучшая идея для такого рода сценариев? (триггер для вставки значения первичного ключа в таблицу с одним столбцом для нового и обновления, затем удаление и вставка из / в ДДТ на основе этого)

PS. Я не хочу использовать для этого репликацию SQL, поскольку у нее много проблем ..

Заранее спасибо

1 Ответ

0 голосов
/ 29 апреля 2011

Со дня, я полагаю, вы уже нашли свое решение. Если нет, то вот как мы справляемся с какой-то похожей ситуацией.

В исходной таблице у нас есть столбец, который показывает, нужно ли отправлять данные в пункт назначения. Мы используем логическое значение, но у вас также может быть поле datetime, которое показывает дату последнего обновления.

Тогда наш процесс извлечения выполняет следующее:

  1. Извлечь все помеченные данные во временную таблицу на конечном сервере
  2. Обновить записи, которые существуют в обеих таблицах
  3. Вставить все записи из временной таблицы, которых нет в целевой таблице
  4. Бросить временную таблицу

Если вы используете SQL 2008, есть опция слияния, которую я не знаю. Вот ссылка, которая объясняет это: Команда SQL 208 MERGE

Надеюсь, это поможет вам, если вам все еще нужно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...