2012-03-14 3 views
0

У меня есть две таблицы в двух разных базах данных SQL Server на разных серверах. Каждая таблица имеет одинаковое количество строк (каждый ~ 65000), и они связаны общим столбцом ID. Я создал объект, который имеет свойства, прочитанные и обновленные из этих двух таблиц.Обновить объект из двух разных таблиц базы данных

Я прочитал все элементы из первой таблицы и создал экземпляр своего объекта, а затем обновил его свойства. Затем я добавляю его в список. После этого я прочитал из второй таблицы, чтобы обновить оставшиеся свойства объекта.

Что может быть лучшим способом для этого? Есть ли у вас предложения? В этот момент я прохожу через свой список и для каждого объекта в списке получаю данные со второго сервера. Конечно, это занимает время (~ 15 минут).

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

+0

Прежде всего заполните обе таблицы базы данных двумя переменными System.Data.DataTable и используйте запрос Linq, чтобы присоединиться к ним, используя столбец id. Затем вы можете просматривать записи и избегать вызовов на второй db для каждой записи. – Kaf

+0

@Indikaf Я уже получаю данные с серверов сначала, извините, что это может быть неясно в моих объяснениях. Когда я измеряю время, которое используется для получения данных SQL, я вижу, что в моем случае это нормально. Я должен потратить большую часть времени, когда пытаюсь найти свой объект в коллекции Linq, чтобы установить его свойства в соответствии с таблицей данных со второго сервера. Мне кажется, удобный подход к серверу очень удобен. Потому что я думаю, что могу сделать то же самое с тем, что я делаю Linq в своем SQL-запросе. – Demir

ответ

1

Решение было бы создать связанный сервер:

http://msdn.microsoft.com/en-us/library/ms188279.aspx

Используя этот метод, вы можете обратиться к базе данных с другого сервера, как если бы он был на том же сервере. Это должно позволить вам выполнить соединение, чтобы завершить набор данных.

0

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

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