Vous êtes actuellement hors ligne, en attente de reconnexion à Internet.

Message d'erreur lorsque vous utilisez la classe SqlBulkCopy pour copier des données d'une ressource dans une table de données dans le .NET Framework 2.0: « System.InvalidOperationException : Impossible d'obtenir des informations de classement colonne pour la table de destination »

IMPORTANT : Cet article est issu du système de traduction automatique mis au point par Microsoft (http://support.microsoft.com/gp/mtdetails). Un certain nombre d’articles obtenus par traduction automatique sont en effet mis à votre disposition en complément des articles traduits en langue française par des traducteurs professionnels. Cela vous permet d’avoir accès, dans votre propre langue, à l’ensemble des articles de la base de connaissances rédigés originellement en langue anglaise. Les articles traduits automatiquement ne sont pas toujours parfaits et peuvent comporter des erreurs de vocabulaire, de syntaxe ou de grammaire (probablement semblables aux erreurs que ferait une personne étrangère s’exprimant dans votre langue !). Néanmoins, mis à part ces imperfections, ces articles devraient suffire à vous orienter et à vous aider à résoudre votre problème. Microsoft s’efforce aussi continuellement de faire évoluer son système de traduction automatique.

La version anglaise de cet article est la suivante: 944389
Symptômes
Dans une application Microsoft .NET Framework 2.0, vous utilisez la classe SqlBulkCopy pour copier des données à partir d'un System.Data.DataTable dans une table dans Microsoft SQL Server. Si le nom de table contient un caractère de point (.), vous recevez le message d'erreur suivantes :
System.InvalidOperationException était non gérée
Message = « Impossible d'obtenir des informations de classement colonne pour la table de destination. Si la table n'est pas dans la base de données active le nom doit être qualifié en utilisant le nom de la base de données (par exemple, [mydb]..[mytable](par exemple, [mydb]..[mytable]); cela s'applique également aux temporaires-tables (par exemple #mytable s'être spécifié comme tempdb..#MyTable). »
Source="System.Data »
Cause
Ce problème est provoqué par un problème dans le System.Data.dll fichier.
Contournement
Pour contourner ce problème, éviter point caractères (.) dans les noms de table.

Si vous avez utiliser un caractère de point (.) de nom d'une table, utilisez le caractère de point (.) dans le cadre de la convention d'affectation de noms SQL. Par exemple, utilisez un nom de table semblable au suivant :
Server.Database.Schema. tablename
Statut
Microsoft a confirmé que c'est un problème dans les produits Microsoft répertoriés dans la section « S'applique à ».
Plus d'informations

Procédure pour reproduire le problème

  1. Dans la base de données Les Comptoirs, exécutez l'instruction SQL suivante : sélectionnez
    select * into [test.33] where 1 = 0--Create a table named [test.33].
  2. Créez une application Visual C#, puis exécutez le code suivant :
    static void Main(string[] args)        {            SqlConnection con = new SqlConnection("Integrated Security=SSPI;Initial Catalog=Northwind;Data Source=.");            con.Open();            SqlConnection dst = new SqlConnection("Integrated Security=SSPI;Initial Catalog=Northwind;Data Source=.");            dst.Open();            SqlCommand com = new SqlCommand("select * from customers", con);            SqlDataReader dr = com.ExecuteReader();            SqlBulkCopy sbc = new SqlBulkCopy(dst);            sbc.DestinationTableName = "Northwind.dbo.[Test.33]";            sbc.WriteToServer(dr); // The failure occurs here.            dst.Close();            con.Close();        }
    dst.Close() ; con.Close();}

Appeler des informations sur la pile

at System.Data.SqlClient.SqlBulkCopy.AnalyzeTargetAndCreateUpdateBulkCommand(BulkCopySimpleResultSet internalResults)       at System.Data.SqlClient.SqlBulkCopy.WriteToServerInternal()       at System.Data.SqlClient.SqlBulkCopy.WriteRowSourceToServer(Int32 columnCount)       at System.Data.SqlClient.SqlBulkCopy.WriteToServer(IDataReader reader)

Avertissement : Cet article a été traduit automatiquement.

Propriétés

ID d'article : 944389 - Dernière mise à jour : 01/03/2008 16:28:59 - Révision : 2.1

Microsoft .NET Framework 2.0, Microsoft .NET Framework 3.0, Microsoft .NET Framework 3.5

  • kbmt kbexpertiseadvanced kbtshoot kbprb KB944389 KbMtfr
Commentaires