2009-06-16 6 views
1

Je suis actuellement la construction d'une application pour mon travail, il fonctionne parfaitement sur mon PC, mais celui que je mets le code de compilation sur le serveur 2008 avec sqlserver 2005 et exécutez-le obtenir une erreur SQL sql données truncat.Bizarre problème avec une exception SQL tronque chaîne ou des données binaires

La partie étrange est qu'elle vise la même table dans la même base de données et qu'elle essaie d'envoyer aux mêmes données.

Quelqu'un a une idée?

l'erreur:

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

Pouvez-vous donner le message d'erreur exact que vous recevez? –

Répondre

0

je devais courir le débogueur à distance sur le serveur et le compte stupide était de 1 char grand pour la table login.lenght = 16 Table table_login (varchar15) ...

2

Exécutez le Générateur de profils SQL Server pour vous assurer que vous envoyez vraiment les mêmes données. Il devrait apparaître assez rapidement que l'une de vos hypothèses est fausse.

3

Pouvez-vous donner une indication de ce que vous faites en ce moment? Une option serait les problèmes d'i18n - c'est-à-dire que le serveur 2008 a des paramètres régionaux différents à votre machine? cela peut signifier que vous construisez un TSQL différent (par exemple, en formatant une date différemment), et qu'il ne rentre plus dans le champ spécifié (par exemple, prend certains formats de date mais pas d'autres). Bien sûr, le réel fixer ici est d'utiliser un datetime - mais ce n'est qu'un exemple!

Je pense que votre meilleur pari vient de faire une trace sql en utilisant les outils de développement sql; Cela rendra évident ce qui est réellement envoyé.

1

Vérifiez les valeurs par défaut de la table ou des triggers. Par exemple, les valeurs de nom d'utilisateur inséré (suser_name) ou de nom d'hôte (host_name) peuvent varier sur différents serveurs. Et l'un d'eux peut être incompatible avec la taille du champ.

0

Assurez-vous que votre définition de la table annonce votre Les définitions de procédures stockées sont les mêmes. I.e si vous avez déclaré pro_id comme varchar(10) la procédure stockée doit également avoir la même définition de varchar(10)

Questions connexes