1. 程式人生 > >SQL Server 執行T-SQL提示:將截斷字串或二進位制資料[SQLSTATE 22001] (錯誤 8152)

SQL Server 執行T-SQL提示:將截斷字串或二進位制資料[SQLSTATE 22001] (錯誤 8152)

今天在執行以前寫的將增量同步到全量的作業過程中報如下錯誤:

訊息
已以使用者 NT SERVICE\SQLSERVERAGENT 的身份執行。 將截斷字串或二進位制資料。 [SQLSTATE 22001] (錯誤 8152)  語句已終止。 [SQLSTATE 01000] (錯誤 3621)  警告: 聚合或其他 SET 操作消除了 Null 值。 [SQLSTATE 01003] (訊息 8153).  該步驟失敗。

在這裡插入圖片描述

然後找到作業步驟二,將程式碼拷貝出來貼上到Notepad++中,發現程式碼也就14214行,沒註釋,錯誤提示中也沒有提示哪行程式碼報錯。。。網上搜索了下,導致該錯誤的原因是欄位型別轉換錯誤(欄位超長),怎麼找到錯誤程式碼進行修改???
在這裡插入圖片描述

排除方法是將程式碼拷貝到SQL Server中執行,在訊息中會提示哪行出錯
在這裡插入圖片描述

在這裡插入圖片描述

再找到此行的位置,一一對比原表與目標表的欄位型別及長度。就會發現問題,我在這裡的錯誤的ious_no這個欄位在原表的型別是nvarchar(22),在目標表中的型別是nvarchar(20),所以報錯。。。

好了,對於初次用這個的我找了很多種方法和嘗試,才找到報錯的地方。。。特記錄下,希望能幫上初學者。