Обработка ошибок с SqlBulkCopy - это может быть сложнее? - PullRequest
2 голосов
/ 27 июля 2010

Здесь очень мало идей.У меня есть случай, когда я использую SqlBulkCopy для закачки данных в БД, и примерно на полпути я сталкиваюсь с различными исключениями (нарушения первичного ключа, нарушения индекса и т. Д.).

Я подтвердил, чтонарушения на самом деле являются правдой и должны быть исправлены в данных.Однако бесит то, что если бы я писал в БД с помощью DataAdapter (который был бы намного медленнее), в плохих строках в DataSet были бы включены HasErrors, чтобы я мог легко их найти и позаботиться о вещах.С SqlBulkCopy?Шиш.Нада.Удачи в поиске того, кто вызвал вашу проблему, потому что все, что вы получите, это имя ошибки (например, «нарушение первичного ключа в yada yada yada, бла-бла-бла») и все.

Есть предложения?Я не могу поверить, что нет никаких способов получить эти ошибки.Со стандартным BCP я думаю, что вы можете даже закачать эти вещи в файл журнала.Разве мы не можем сделать что-то подобное с SqlBulkCopy?

Thx,

Ответы [ 2 ]

0 голосов
/ 27 июля 2010

Когда я делаю импорт данных, требующий проверки, я обычно помещаю данные в таблицу, которая будет принимать данные как есть, затем запускаю сохраненный процесс или какой-то другой sql, который может проверять мои данные на основе набора,выполните преобразования и поместите его в конечный пункт назначения таким образом, чтобы я мог контролировать его.

0 голосов
/ 27 июля 2010

Посмотрите на исходный код SqlBulkCopy - вы получите ответ там - там нет реальной обработки ошибок.

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

...