我目前正在为我的工作构建一个应用程序,它在我的电脑上完美运行,但我将编译代码使用 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)
你能透露一下你现在在做什么吗?一种选择是 i18n 问题 - 即 2008 服务器是否与您的计算机有不同的区域设置?这可能意味着您正在构建一些不同的 TSQL(例如,以不同的方式格式化日期),并且它不再适合指定的字段(例如,
varchar(10)
将采用某些日期格式,但不采用其他格式)。当然,这里真正的修复是使用 datetime
- 但这只是一个例子!我认为最好的选择是使用 sql 开发工具进行 sql 跟踪;这将使实际发送的内容变得显而易见。
pro_id
声明为
varchar(10)
,则存储过程也应该具有与 varchar(10)
相同的定义