com.microsoft.sqlserver.jdbc.SQLServerException: 將截斷字符串或二進制數據


從Oracle向SQL Server中間庫交換數據的時候,出現了異常

com.microsoft.sqlserver.jdbc.SQLServerException: 將截斷字符串或二進制數據

具體異常信息如下:

Caused by: 

com.microsoft.sqlserver.jdbc.SQLServerException: 將截斷字符串或二進制數據。
at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDatabaseError(SQLServerException.java:216)
at com.microsoft.sqlserver.jdbc.SQLServerStatement.getNextResult(SQLServerStatement.java:1515)
at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.doExecutePreparedStatement(SQLServerPreparedStatement.java:404)
at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement$PrepStmtExecCmd.doExecute(SQLServerPreparedStatement.java:350)
at com.microsoft.sqlserver.jdbc.TDSCommand.execute(IOBuffer.java:5696)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.executeCommand(SQLServerConnection.java:1715)
at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeCommand(SQLServerStatement.java:180)
at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeStatement(SQLServerStatement.java:155)
at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.executeUpdate(SQLServerPreparedStatement.java:314)
at com.ibm.ws.rsadapter.jdbc.WSJdbcPreparedStatement.pmiExecuteUpdate(WSJdbcPreparedStatement.java:1104)
at com.ibm.ws.rsadapter.jdbc.WSJdbcPreparedStatement.executeUpdate(WSJdbcPreparedStatement.java:771)

... 11 more


在網上搜羅了一下,大概有幾種原因會導致此異常

http://www.cnblogs.com/lingy/archive/2012/09/14/2684491.html

字段長度不夠


http://bbs.csdn.net/topics/330076495

有trigger處理業務邏輯



這次遇到的就是字段長度不夠的問題,SQL Server中定義的長度為24,而Oracle中定義的長度為50,修改字段長度,問題解決


判斷長度相關SQL語句如下:以字符串“某餐證字20112101230000159”為例

SQL Server中查詢的SQL語句

select len('某餐證字20112101230000159'),datalength('某餐證字20112101230000159');

長度為21,占用25個字節


Oracle中查詢的SQL語句

select length('某餐證字20112101230000159'), lengthb('某餐證字20112101230000159') from dual;

長度為21,占用25個字節


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM