Странная проблема с усеченной строкой SQL или двоичными данными - PullRequest
1 голос
/ 16 июня 2009

В настоящее время я создаю приложение для своей работы, оно отлично работает на моем ПК, но в один я помещаю код компиляции на сервер 2008 с помощью sqlserver 2005 и запускаю его, я получаю данные об ошибках SQL 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)

Ответы [ 5 ]

3 голосов
/ 16 июня 2009

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

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

2 голосов
/ 16 июня 2009

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

1 голос
/ 16 июня 2009

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

0 голосов
/ 12 февраля 2010

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

0 голосов
/ 16 июня 2009

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...