2009-06-16 18 views
1

現在私の仕事のためのアプリケーションを構築していますが、それは自分のPC上ではうまく動作しますが、sqlserver 2005を使用して2008サーバにコンパイルコードを置き、 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

正確なエラーメッセージは表示されますか? –

答えて

0

私は、サーバー上のリモートデバッガを実行しなければならなかったと愚かなアカウントがテーブルlogin.lenght = 16テーブルtable_login(varchar15)にとって大きな1つの文字だった...

2

はあなたが本当に同じデータを送信していることを確認するために、SQL Serverプロファイラを実行します。あなたの前提の1つが間違っていることがかなり早く明らかになるはずです。

3

この時点で何をしているのかを示すことはできますか? 1つの選択肢はi18nの問題です - つまり、2008サーバはあなたのマシンに異なる地域設定を持っていますか?これは、異なる(たとえば、日付の書式を異なるように)異なるTSQLを構築しており、指定されたフィールドに適合しなくなったことを意味する可能性があります(varchar(10))。もちろん、実際の修正はdatetimeを使用することです - これは単なる例です!

私はあなたの最善の策はSQLの開発ツールを使用してSQLトレースを行うことから来ると思います。これは実際に何が送信されているかを明白にします。

1

表またはトリガーのデフォルト値を確認してください。たとえば、挿入されたユーザー名(suser_name)またはホスト名(host_name)の値は、サーバーによって異なる場合があります。それらの1つはフィールドサイズと互換性がないかもしれません。

0

は、必ずあなたのテーブル定義広告あなたの作成しますストアドプロシージャの定義は同じです。たとえば、 pro_idvarchar(10)と宣言した場合、ストアドプロシージャも同じ定義を持つ必要があります。varchar(10)