[筆記]SQLBulkCopy使用上遇到的問題

  • 2229
  • 0

摘要:[筆記]SQLBulkCopy使用上遇到的問題

先聲明
這筆記是最近觀察到的現象,SQLBulkCopy真實的動作請洽原廠

背景
DB--SQLBulkCopy-->MailDB
此MailDB是各系統統一發送Mail的機制
會即時讀資料庫發送Mail出去
問題發生在常常有沒收到Mail的情況
就去查資料庫

這時候可以看到我塞的交易資料被中斷,第一欄位是identify,
所以SQLBulkCopy在處裡過程並不會Table Lock

由identify推測,SQLBulkCopy並不會allocate一整串的編號
反而是像在SQL Server內部自己一筆一筆insert
從CreateDate看來17:44:44建立的到塞完要花超過20秒
別的系統在塞17:45:03的資料時,他還在塞

發送Mail在抓資料並不會抓到這一批insert的資料
所以才會只抓到後面insert的資料
所以推測應該是record lock

由於發送的程式會記錄目前最大編號,
所以在整批資料塞完前,中間穿插的一些其他系統取走的編號
就成了最大號,因此中間一大段就會被略過



或許發送Mail程式這種寫法有爭議,當時的時空背景可能是為了效能
不過也剛好這樣,才能發現SQLBulkCopy有這些特性