Distinguish ROWS_PER_BATCH estimates from BULK INSERT commit batches, then review logging, locks, rejected rows, and atomic loading.
Detecting Changed Rows With a Row Hash
Compare one fingerprint instead of twenty columns. I show a safe HASHBYTES recipe, the NULL trap that fools CONCAT_WS, and a load that touches only the rows that changed.
Archiving Old Rows to a History Table in Small Batches
Make archiving old rows atomic with DELETE OUTPUT, preserved source identifiers, bounded batches, reconciliation, and a job time limit.
Deleting Millions of Rows in Batches Without Filling the Log
Plan deleting millions of rows with bounded commits, an indexed cutoff, log reuse checks, and a clear choice of retention method.
SQL SERVER – Why is My Query Switching to Row Processing and Not Doing Batch Processing?
Why is my query switching to row processing and not doing batch processing? Here is what to check with ColumnStore indexes in SQL Server.
SQL SERVER – Combined Multiple .SQL files into One Single File
A friend reading on his phone wanted one file instead of 100s of scripts. I combined multiple .SQL files into one single file from the command prompt.
Batch vs Stream Processing: When Data Cannot Wait
Batch vs Stream Processing is a choice about how long an answer can wait. This post compares an hourly batch job with a 5-minute stream window on the same six orders, covers the cost of real time and shows how to choose.







