Наиболее эффективный способ объединения данных в базе данных SQL Server из источника ODBC - PullRequest
3 голосов
/ 29 октября 2010

Мне нужно постоянно объединять (вставлять / удалять) данные из источника данных ODBC в базу данных SQL Server 2008 (количество строк варьируется от одной строки до 100000 строк)

Что бы вы посоветовали в качестве наиболее эффективного подхода (с использованием .net 3.5):

  1. Используйте SqlBulkCopy во временной таблице, затем вызовите хранимую процедуру с командой Merge, используя временную таблицу в качестве источника.
  2. Вызов хранимой процедуры с параметром табличного значения, где данные отправляются в качестве параметра (SqlDbType.Structured), параметр таблицы используется в качестве источника команды слияния. Отправляются ли данные с помощью параметра таблицы на сервер при массовой операции? Возможно ли и эффективно ли это использовать в случаях, когда> 1000 строк?
  3. Вызов хранимой процедуры с помощью команды слияния, которая использует OpenRowset bulk для получения данных из источника ODBC (использовать связанный сервер?)
  4. Любым другим способом.

Спасибо!

1 Ответ

0 голосов
/ 29 октября 2010

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

В SSIS ваш рабочий процесс будет выглядеть следующим образом:

  • урезать промежуточную таблицу
  • создать задачу потока данных для импорта данных из источника в промежуточную таблицу, при необходимости обработать ошибки
  • вызвать хранимую процедуру для объединения данных

После создания пакета его можно запланировать с помощью SQLАгент.Обязательно создайте пакет с параметром DontSaveSensitiveData, установленным в свойствах пакета, чтобы избежать странных ошибок шифрования.

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