подробная информация об ошибке для массовой вставки SQL Server - PullRequest
1 голос
/ 29 марта 2010

Я использую SQL Server Express 2008 и выполняю массовую вставку данных.Я хотел бы иметь больше подробных сообщений об ошибках, в идеале печатать данные, которые не удалось вставить.Это возможно?

1 Ответ

0 голосов
/ 29 марта 2010

Это возможно, но для этого может потребоваться много усилий - я вспоминаю, как работал над подсистемой в течение нескольких дней, прежде чем я заставил ее делать все, что ей нужно было сделать. Я полагаю, что это одно из (немногих, но все еще слишком много) мест, где при попадании в ошибку SQL будет возвращать два (2) сообщения об ошибке в одно за другим, второе сообщение расплывчато и нечетко, а все функции обработки ошибок могут получить доступ только к информации, относящейся ко второму отстойному сообщению, а не к первой, где находится реальная информация. У меня нет кода передо мной, но логика была что-то вроде:

  • Используйте опцию «errorfile» в BULK INSERT для генерации файла ошибок, если массовая вставка завершится неудачно
  • TRY / CATCH для группового вызова вставки и внимательно проверьте возвращенный номер ошибки
  • Если ошибка соответствующего типа, откройте и прочитайте содержимое файла, чтобы определить, где что-то пошло не так, и создайте сообщение об ошибке вокруг этого

Неловко, как и все, но в итоге все получилось довольно хорошо. До тех пор, пока диск + путь + имя файла, из которого вы вставляли, не превышали 128 символов (в SQL 2005, и я держу пари, что они не исправили это в 2008 году.) Я не считаю Bulk Insert одной из моих любимых команд .

...