SQL MYSTERIES: Tracing BCP Might Fool You

Today I was tracking a large BCP.exe ‘IN’ operation and monitoring the sys.dm_exec_requests entries.  The ‘BULK INSERT’ command entry appeared, showing the CPU, reads, writes, … but these values where getting reset from time to time.  Here are 3 snapshots from my system.

cpu_time total_elapsed_time writes session_id start_time command

1387 1396 32 51 2018-08-07 00:45:42.670 BULK INSERT
1930 1941 66 51 2018-08-07 00:46:02.087 BULK INSERT
632 638 32 51 2018-08-07 00:46:23.313 BULK INSERT

Instead of a single BULK INSERT batch I saw multiple BULK INSERT batches taking place on the same session.  When you specify the BCP, batch size (-b) the rows are streamed until the batch size is reached, a commit is issued and a new batch is started for subsequent rows.  Thus, you see a series of BULK INSERT operations and not the BCP in it entirety. 

Bob Dorr - Principal Software Engineer SQL Server