2012-05-29 18 views
0

У меня есть вопрос, так как я здесь ...Каков самый быстрый способ синхронизации базы данных с помощью C#?

У меня есть исходная база данных (SQL Server 2008) и база данных назначения (также SQL Server 2008). Существуют изменения, которые необходимо выполнить, что означает, что многие данные должны проходить через C# (преобразование координат, триангуляция и т. Д.). Но как бы вы это сделали?

Я ищу здесь несколько вещей. Прямо сейчас я использую и вытаскиваю данные в DataTable и используя данные, подобные этому, чтобы манипулировать им до того, как я введу его в целевую базу данных, но что было бы лучше (быстрее) Делать это?

Кроме того, для данных, которые не нужно манипулировать, я все равно протаскиваю их таким же образом, я предполагаю, что есть способ избежать того, что было бы быстрее?

Техническая информация:

  • DB: 2 х SQL Server 2008 (источник/приемник) - На том же сервере
  • Язык: C#/.NET 3.5
  • ОС: Windows
+0

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

+0

Является ли преобразование данных детерминированным для каждой записи или изменения в одной записи влияют на других? –

+0

Можете ли вы выполнить обработку в базе данных с помощью SQLCLR? http://msdn.microsoft.com/en-us/library/ms131045.aspx – LukeH

ответ

2

Я бы ввел исходные данные в временную таблицу (ы) на целевую базу данных.

Тогда я бы использовал SQL Merge для обновления адресата.

MERGE (Transact-SQL)

Я бы полностью свести к минимуму роль, что C# играет.

+0

Это имеет смысл. Я имею в виду, что C# делает некоторые работы для некоторых таблиц. Но я мог бы использовать это для таблиц, которые не нужно изменять!:) – Faraday

0

Вы можете вставить код .NET на сервер sql с помощью SQL CLR, чтобы удалить время прохождения в оба конца между базой данных и машиной.

+0

Я мог бы использовать SQLCLR, я использую его для некоторых других вещей, которые я делаю. Но отнимающая много времени часть этого делает спаривание, как только C# имеет это, это занимает некоторое время, чтобы взломать все записи и изменить их, но мой главный вопрос заключается в том, могу ли я улучшить эту конкретную часть. Я стараюсь избегать SQLCLR, если нет улучшения MASSIVE, поскольку отладка - это кошмар! – Faraday

0

Для задач ETL вы должны использовать Integration Services.

+0

Я рассмотрю это немного больше, но я не уверен, что у меня будет время для этого. Это должно быть вызвано действием пользователя, которое я знаю, что службы Integration Services могут выполнять, но я не слишком хорошо знаком с ними, и в то время, когда у меня есть, я не уверен, что смогу реализовать достаточно хорошее решение, чтобы гарантировать потерянное время. Если вы не считаете, что это действительно легко и готовы дать мне это ;-) – Faraday

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