Каков недостаток SqlBulkCopy

Работающий « из коробки» Контроллер из вашего кода, который показывает состояние:

.controller('State1Ctrl', function ($state) {
    console.log("Current State: ", $state.current.name);
});
9
задан Edison Chuang 12 June 2009 в 10:09
поделиться

2 ответа

Я могу вспомнить две причины:

  1. Насколько мне известно, он доступен только для Microsoft SQL Server
  2. Во многих обычных рабочих нагрузках вы не выполняете массовую вставку , а время от времени вставку s смешано с select s и update s. Сами Microsoft заявляет, что обычная вставка более эффективна для этого на странице SqlBulkCopy MSDN .

Обратите внимание, что если вам нужен SqlBulkCopy чтобы быть эквивалентом обычной вставки, вам, по крайней мере, необходимо передать ей параметр SqlBulkCopyOptions.CheckConstraints .

но случайные вставки смешиваются с select s и update s. Сами Microsoft заявляет, что обычная вставка более эффективна для этого на странице SqlBulkCopy MSDN .

Обратите внимание, что если вам нужен SqlBulkCopy чтобы быть эквивалентом обычной вставки, вам, по крайней мере, необходимо передать ей параметр SqlBulkCopyOptions.CheckConstraints .

но случайные вставки смешиваются с select s и update s. Сами Microsoft заявляет, что обычная вставка более эффективна для этого на странице SqlBulkCopy MSDN .

Обратите внимание, что если вам нужен SqlBulkCopy чтобы быть эквивалентом обычной вставки, вам, по крайней мере, необходимо передать ей параметр SqlBulkCopyOptions.CheckConstraints .

10
ответ дан 4 December 2019 в 09:14
поделиться

SqlBulkCopy также существует для Oracle v11, но он предоставляется сборками Oracle .NET, которые вы получаете при установке Oracle Client. Класс SqlBulkCopy в основном реализуется один за другим поставщиком целевого механизма базы данных.

Один ОГРОМНЫЙ недостаток - нет абсолютно никакого сообщения об ошибках. Если, например, вы обновили данные в DataSet, сбрасываете их обратно в БД с помощью адаптера, и есть нарушение ключа (или любой другой сбой), у виновных DataRows будет .HasErrors установлено значение true, и вы можете добавьте это в свое сообщение об исключении, когда оно будет поднято.

Используя SqlBulkCopy, вы просто получаете тип ошибки и все. Удачи в отладке.

13
ответ дан 4 December 2019 в 09:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: