今天在跨 DB 批次塞資料的時候出現這個錯誤,
一開始以為是某筆資料問題、或是組 Insert SQL 哪邊沒處理好,
查了好久終於找到是寫 Log 的地方存檔錯誤,
根據參數 @p5 推斷出對應的欄位,
該欄位的資料型態是 VARCHAR(MAX),
於是乎終於在 GOOGLE 下對了關鍵字
"c# varchar max TDS RPC"
然後找到了發生一樣問題的文章
使用DbCommand傳遞參數發生例外
SQLCLR-SqlString Max Size 8000 Limitation
根據文章我的理解是這樣的,
在產生 Insert SQL 的時候,會去計算內容大小,
8000 以內跟 8000 以上產生的 statement 不一樣,
但如果內容有中文時,會造成計算上的錯誤,
所以就出現這個錯誤訊息了,
最後改法沒用文章裡面的解法,
直接把 VARCHAR(MAX) 改成 NVARCHAR(MAX) 結束。
沒有留言:
張貼留言