SQL 异常截断字符串或二进制数据的奇怪问题

问题描述 投票:0回答:6

我目前正在为我的工作构建一个应用程序,它在我的电脑上完美运行,但我将编译代码使用 sqlserver 2005 放到 2008 服务器上并运行它,我得到一个 sql 错误 truncat data。

奇怪的部分是它针对同一个数据库中的同一个表,并尝试发送到相同的数据。

有人有想法吗?

错误:

Unhandled Exception: System.Data.SqlClient.SqlException: String or binary data w
ould be truncated.
The statement has been terminated.
   at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolea
n breakConnection)
   at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObj
ect stateObj)
   at System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cm
dHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, Tds
ParserStateObject stateObj)
   at System.Data.SqlClient.SqlDataReader.ConsumeMetaData()
   at System.Data.SqlClient.SqlDataReader.get_MetaData()
   at System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, Run
Behavior runBehavior, String resetOptionsString)
   at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBe
havior, RunBehavior runBehavior, Boolean returnStream, Boolean async)
   at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehav
ior, RunBehavior runBehavior, Boolean returnStream, String method, DbAsyncResult
 result)
   at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehav
ior, RunBehavior runBehavior, Boolean returnStream, String method)
c# sql
6个回答
3
投票

你能透露一下你现在在做什么吗?一种选择是 i18n 问题 - 即 2008 服务器是否与您的计算机有不同的区域设置?这可能意味着您正在构建一些不同的 TSQL(例如,以不同的方式格式化日期),并且它不再适合指定的字段(例如,

varchar(10)
将采用某些日期格式,但不采用其他格式)。当然,这里真正的修复是使用 datetime - 但这只是一个例子!

我认为最好的选择是使用 sql 开发工具进行 sql 跟踪;这将使实际发送的内容变得显而易见。


2
投票


1
投票


0
投票


0
投票
pro_id

声明为

varchar(10)
,则存储过程也应该具有与
varchar(10)
 相同的定义
    


0
投票
© www.soinside.com 2019 - 2024. All rights reserved.