亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

ODBC varchar(max) 參數似乎為 8000 個字符拋出“HY104 - 無效精度值”

ODBC varchar(max) 參數似乎為 8000 個字符拋出“HY104 - 無效精度值”

C#
皈依舞 2022-01-09 17:39:42
我有一個帶有輸入參數的存儲過程,varchar(max)我們將此參數插入到類型為表的列中varchar(max)(例如,長度設置為-1)。我正在使用 ODBC,因為我們被配置為使用 DSN(它是一個遺留應用程序)。MyOdbcParameter被指定為OdbcType.VarChar。這就是所謂的與ExecuteNonQuery當數據是完全8000個字符,它拋出以下異常:InnerException:消息:錯誤 [HY104] [Microsoft][ODBC SQL Server Driver]無效的精度值 StackTrace:在 System.Data.Odbc.OdbcConnection.HandleError(OdbcHandle hrHandle,RetCode retcode)在 System.Data.Odbc.OdbcParameter.Bind( System.Data.Odbc.OdbcParameterCollection.Bind(OdbcCommand command, CMDWrapper cmdWrapper, CNativeBuffer parameterBuffer) 在 System.Data.Odbc.OdbcCommand.ExecuteReaderObject(CommandBehavior 行為, String System.Data.Odbc.OdbcCommand.ExecuteReaderObject(CommandBehavior 行為, String 方法, Boolean needReader) 在 System.Data.Odbc.OdbcCommand.ExecuteNonQuery()我無法在本地重新創建它(錯誤發生在我們的生產系統中,所以我無法在那里運行手動測試)。在研究代碼時,我注意到當我們創建 OdbcParameter 時,我們沒有設置Size參數。我正在嘗試找出如何停止錯誤。到目前為止,我的想法是:創建時指定大小OdbcParameter;如果長度正好是 8000,則在末尾附加一個空格(它是 XML,所以當它被讀回時,它會被解析成一個,XDocument所以我認為附加的空格不會有任何區別);也許嘗試使用 aSqlConnection而不是 an OdbcConnection,看看問題是否消失。但是因為我無法重新創建錯誤,所以這一切都是在黑暗中刺傷。錯誤的實際原因可能是什么,修復它的最佳方法是什么?我知道數據頁發生了某種變化,或者長度超過 8000 的 varchar 發生了某種變化,但我找不到任何與 ODBC 相關的具體內容。
查看完整描述

2 回答

?
MYYA

TA貢獻1868條經驗 獲得超4個贊

SQL ServerWindows 附帶的ODBC 驅動程序尚未針對 SQL 2000 之后引入的新功能進行更新,并且僅適用于需要向后兼容為 SQL 2005 之前的世界開發的舊應用程序的情況。

嘗試使用現代 ODBC 驅動程序,例如ODBC Driver 17 for SQL Server直接支持varchar(MAX)SQL 2005 中引入的數據類型。


查看完整回答
反對 回復 2022-01-09
?
小怪獸愛吃肉

TA貢獻1852條經驗 獲得超1個贊

雖然我還沒有確定確切的原因,但我發現將Size字段設置OdbcParameter為數據的實際大小似乎可以解決問題。

測試值正好是 8000 及以下或以上,只是為了驗證。


查看完整回答
反對 回復 2022-01-09
  • 2 回答
  • 0 關注
  • 743 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號