Вы можете откатить вставки. Для этого нам нужно сначала понять две вещи
BatchSize
: Нет строк, которые нужно вставить в транзакцию. По умолчанию все
Файл данных. Итак, файл данных находится в транзакции
Скажем, у вас есть текстовый файл, который имеет 10 строк и строку 8, а строка 7 содержит некоторые недопустимые данные. При массовой вставке файла без указания или с указанием размера пакета 8 из 10 вставляются в таблицу. Недопустимые строки, т. Е. 8-е и 7-е, не выполняются и не вставляются.
Это происходит потому, что значение по умолчанию MAXERRORS
равно 10 на транзакцию.
Согласно MSDN:
МАКСЕРРОРЫ:
Задает максимально допустимое количество синтаксических ошибок в данных.
перед отменой операции массового импорта. Каждый ряд, который не может быть
импортированный операцией массового импорта игнорируется и считается как единое целое
ошибка. Если max_errors не указано, по умолчанию используется значение 10.
Таким образом, чтобы не выполнить все 10 строк, даже если одна из них недействительна, нам нужно установить MAXERRORS=1
и BatchSize=1
Здесь также имеет значение число BatchSize.
Если указать BatchSize и недопустимая строка находится внутри конкретного пакета, он будет выполнять откат только определенного пакета, а не всего набора данных.
Поэтому будьте осторожны при выборе этой опции
Надеюсь, что это решит проблему.