Você pode reverter as inserções. Para fazer isso, precisamos entender duas coisas primeiro
BatchSize
: No of rows to be inserted per transaction . The Default is entire
Data File. So a data file is in transaction
Digamos que você tenha um arquivo de texto com 10 linhas e linha 8 e a linha 7 tenha alguns detalhes inválidos. Quando você insere o arquivo em massa sem especificar ou com a especificação do tamanho do lote, 8 de 10 são inseridos na tabela. A Linha Inválida, por exemplo, 8º e 7º, falha e não é inserida.
Isso acontece porque a contagem MAXERRORS
padrão é 10 por transação.
Como no MSDN:
MAXERRORS :
Specifies the maximum number of syntax errors allowed in the data
before the bulk-import operation is canceled. Each row that cannot be
imported by the bulk-import operation is ignored and counted as one
error. If max_errors is not specified, the default is 10.
Portanto, para falhar todas as 10 linhas, mesmo que uma seja inválida, precisamos definir MAXERRORS=1
e BatchSize=1
Aqui, o número de BatchSize também é importante.
Se você especificar BatchSize e a linha inválida estiver dentro do lote específico, ele irá reverter somente o lote específico, não o conjunto de dados inteiro.
Portanto, tenha cuidado ao escolher esta opção
Espero que isso resolva o problema.