alguien sabe si con el bulk puedo hacer un commit por x registros
En el BCP, solo tienes que incluir -a
Ahora bien, SQL Server es muy torpe para manejar procesos batch, debes pasar tu base a bulklogged, como modo de recuperacion, insisto, piensa en ETL (SSIS).
-a packet_size
Specifies the number of bytes, per network packet, sent to and from the server. A server configuration option can be set by using SQL Server Management Studio (or the sp_configure system stored procedure). However, the server configuration option can be overridden on an individual basis by using this option. packet_size can be from 4096 to 65535 bytes; the default is 4096.
Deberia revisar tambien el parametro:
ROWS_PER_BATCH = bb
Número de filas de datos por lote (como bb). Se usa cuando no se especifica -b , por lo que el archivo de datos completo se envía al servidor en una sola transacción. El servidor optimiza la carga masiva según el valor bb. De forma predeterminada, el valor de ROWS_PER_BATCH es desconocido.