MSSql bcp transaction rollback on error
A rollback of a BCP batch transaction occurs when SQL Server errors occur during the bulk insert (e.g. constraint violations) but not due to client side errors (e.g. data type conversion during BCP parsing). Erred records are not sent to the server and are not part of a transaction. 

SQL Server errors will not only rollback the current batch but abort the entire BCP operation.