Странная проблема с строкой исключения SQL или двоичными данными

В настоящее время я создаю приложение для своей работы, он отлично работает на моем ПК, но один я поставил код компиляции на сервер 2008 с sqlserver 2005 и запустил его, я получаю данные об ошибках sql error truncat.

Странная часть состоит в том, что она нацелена на одну и ту же таблицу в той же базе данных и пытается отправить ее на одни и те же данные.

У кого-то есть идея?

Ошибка:

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,

1

Ответов: 5


3

Можете ли вы дать какое-либо указание на то, что вы делаете сейчас? Один из вариантов - это проблемы с i18n, т. Е. Сервер 2008 имеет разные региональные настройки на вашем компьютере? это может означать, что вы строите какой-то TSQL, который отличается (например, форматирование даты по-другому), и он больше не подходит в указанном поле ( varchar(10)например, для некоторых форматов даты, но не для других). Конечно, реальное решение здесь - использовать, datetimeно это только пример!

Я думаю, что ваш лучший выбор исходит от выполнения sql-трассировки с использованием инструментов разработки sql; это сделает очевидным то, что на самом деле отправляется.


2

Запустите SQL Server Profiler, чтобы убедиться, что вы действительно отправляете одни и те же данные. Это должно стать очевидным довольно быстро, что одно из ваших предположений неверно.


1

Проверьте значения по умолчанию для таблицы или триггеров. Например, значения вставленных имен пользователей (имя_пользователя) или имени хоста (host_name) могут различаться на разных серверах. И один из них может быть несовместим с размером поля.


0 принят

Я должен был запустить удаленный отладчик на сервере, а глупая учетная запись - 1 символ, большой для таблицы login.lenght = 16 table table_login (varchar15) ...


0

Убедитесь, что ваше объявление определения таблицы содержит определения хранимых процедур. Т.е. , если вы объявили , pro_idкак varchar(10)хранимая процедура также должна иметь такое же определениеvarchar(10)

C #, MS SQL,
Похожие вопросы