Looking at the MSDN docs there's no nice way of doing this. Their examples all suggest doing a "pre-work" row count, then doing the BulkCopy, then doing a "post-work" row count (which will obviously give you the final count). http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlbulkcopy.aspx[^] There is an event fired SqlRowsCopied but it looks like it only fires after a fixed number of rows have been copied (so if you set the NotifyAfter property to 50 and copy 99 rows you'll only get notified once), although it might fire when it completes as well (I'll leave that for you to check). http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlbulkcopy.sqlrowscopied.aspx[^] HTH