Хранимая процедура против DTS / SSIS для вставки данных в SQL Server - PullRequest
1 голос
/ 29 июля 2011

Какой способ вставки больших объемов данных в таблицу является более эффективным и / или считается оптимальной практикой - с помощью оператора INSERT INTO в хранимой процедуре или с использованием преобразования данных DTS / SSIS? Исходные данные находятся на том же сервере SQL, что и таблица назначения.

Ответы [ 3 ]

1 голос
/ 29 июля 2011

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

  1. Один раз или повторяется? Это в основном, чтобы определить, нужно ли мне отвечать на вопросы поддержки и производительности. Если это однократная передача, просто делайте это там, где вам удобнее, и архивируйте исходный код, КОГДА вам придется делать это снова.
  2. Что другие разработчики в моем магазине используют / удобнее всего? Здесь я делаю много вещей из служб SSIS, и они делают в основном только SQL (и VB). Поскольку я хочу, чтобы они поддерживали его, когда меня нет, я, вероятно, встроу его в SP, если задача не слишком сложная.
  3. Будет ли это работать ночью, когда нагрузка на сервер низкая или имеет значение настройка производительности? Для дневных вещей я почти всегда буду создавать хранимую процедуру, так как мне или кому-то еще проще в этом разобраться и настроить проблемы с производительностью. Если производительность менее важна, я с большей вероятностью использую SSIS. Это не потому, что я думаю, что INSERT быстрее, просто потому, что его легче настроить после факта.
1 голос
/ 29 июля 2011

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

С другой стороны, если ваша логика преобразования очень сложна и / или изменчива, рассмотрите SSIS. Он существует, чтобы позволить вам моделировать и поддерживать сложные, многошаговые преобразования.

Удачи!

0 голосов
/ 30 июля 2011

Я всегда использую Bulk Insert. Вам нужно будет удалить индексы и в конце перестроить их.

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

  1. ALTER INDEX [indexName] ON Таблица DISABLE

  2. Массовая вставка

  3. ALTER INDEX [indexName] ON Таблица REBUILD

...