2009-06-16 51 views
1

我目前正在为我的工作建立一个应用程序,它完全在我的电脑上工作,但一个我把编译代码放到2008服务器与sqlserver 2005并运行它我得到一个sql错误truncat数据。奇怪的问题与SQL异常截断字符串或​​二进制数据

奇怪的部分是它瞄准同一个数据库中的同一张表,它试图发送到相同的数据。

任何人有一个想法?

错误:

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) 
+0

您能否提供您收到的确切错误消息? – 2009-06-16 09:01:17

回答

0

我不得不在服务器上运行远程调试器和愚蠢的帐户为1周的char大的表login.lenght = 16表table_login(varchar15)...

2

运行SQL Server Profiler来确保你真的发送相同的数据。很快你会发现你的一个假设是错误的。

3

你能否指出你现在在做什么?一个选项是国际化问题 - 即2008服务器对你的机器有不同的区域设置吗?这可能意味着您正在构建一些不同的TSQL(例如,以不同的格式设置日期),并且它不再适合指定的字段(例如,varchar(10)将采用某些日期格式,但不包括其他日期格式)。当然,真实修复这里是使用datetime - 但这只是一个例子!

我认为你最好的选择来自使用sql开发工具做一个sql跟踪;这将会明确实际发送的内容。

1

检查表或触发器的默认值。例如,插入的用户名(suser_name)或主机名(host_name)值可能在不同的服务器上有所不同。其中之一可能与字段大小不兼容。

0

确保您的表定义广告你的存储过程定义是相同的。 I.e 如果您声明pro_idvarchar(10)存储过程也应具有相同的定义varchar(10)

相关问题