DetailPage-MSS-KB

Base de connaissances

Numéro d'article: 944389 - Dernière mise à jour: jeudi 3 janvier 2008 - Version: 2.1

 

Sommaire

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)

Les informations contenues dans cet article s'appliquent au(x) produit(s) suivant(s):
  • Microsoft .NET Framework 2.0
  • Microsoft .NET Framework 3.0
  • Microsoft .NET Framework 3.5
Mots-clés : 
kbmt kbexpertiseadvanced kbtshoot kbprb KB944389 KbMtfr
Traduction automatiqueTraduction automatique
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  (http://support.microsoft.com/kb/944389/en-us/ )
L'INFORMATION CONTENUE DANS CE DOCUMENT EST FOURNIE PAR MICROSOFT SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE. L'UTILISATEUR ASSUME LE RISQUE DE L'UTILISATION DU CONTENU DE CE DOCUMENT. CE DOCUMENT NE PEUT ETRE REVENDU OU CEDE EN ECHANGE D'UN QUELCONQUE PROFIT.
Partager
Options de support supplémentaire
Forums du support Microsoft Community
Nous contacter directement
Trouver un partenaire Microsoft Certified Partner
Microsoft Store