Vous pouvez recevoir un message d’erreur lorsque vous tentez de remplir une table de SQL Server 2000 avec un plan de génération de données dans Visual Studio 2005 Team Edition for Database Professionals : « System.Data.SqlClient.SqlError : non autorisée conversion implicite à partir de données tapez NPD

Symptômes

Lorsque vous tentez de remplir une table Microsoft SQL Server 2000 avec un plan de génération de données dans Microsoft Visual Studio 2005 Team Edition for Database Professionals, vous pouvez recevoir un message d’erreur semblable au suivant :
Table TableName : System.Data.SqlClient.SqlError : non autorisée conversion implicite du type de données ntext aux données de type varchar, table 'nom_table', colonne 'ColumnName'. Utilisez la fonction CONVERT pour exécuter cette requête.
Remarque Ce problème se produit lorsque vous essayez de remplir le champ d’un champ de type varchar ou nvarchar qui contient plus de 4 000 caractères.

Cause

Ce problème se produit car le fournisseur SqlClient convertit le type de données varchar ou nvarchar à un texte ou d’un type de données ntext . Toutefois, vous ne peut pas convertir un type de données text ou ntext dans un type de données varchar ou nvarchar dans SQL Server 2000.

Remarque Dans Microsoft SQL Server 2005, le fournisseur SqlClient utilise un type de données varchar (max) ou nvarchar (max) au lieu du type de données text ou ntext . Par conséquent, ce problème ne se produit pas dans SQL Server 2005.

Solution de contournement

Pour contourner ce problème, assurez-vous que les colonnes de type varchar dans une base de données SQL Server 2000 ne contiennent pas plus de 4 000 caractères.

État

Microsoft a confirmé l'existence de ce 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. Démarrez Microsoft Visual Studio 2005.
  2. Dans le menu Fichier, pointez sur Nouveau, puis cliquez sur Projet.
  3. Développez Des projets de base de données, puis cliquez sur Microsoft SQL Server.
  4. Cliquez sur SQL Server 2000, tapez Database1 dans la zone nom , puis cliquez sur OK.
  5. Dans l’Explorateur de solutions, développez Objets de schéma, cliquez sur Tables, cliquez sur Ajouter, puis cliquez sur Table.
  6. Dans la zone nom , tapez MaxVarChar, puis cliquez sur Ajouter.
  7. Remplacez le code dans la table dbo. Fichier de MaxVarChar.table.sql avec l’exemple de code suivant.
    CREATE TABLE [dbo].[MaxVarChar](
    [VarChar_maxLength] [varchar] (8000) COLLATE SQL_Latin1_General_CP1_CS_AS NULL
    ) ON [PRIMARY]
  8. Dans le menu données , pointez sur L’éditeur T-SQL, puis cliquez sur Exécuter le SQL.
  9. Dans la boîte de dialogue se connecter à la base de données , cliquez sur la connexion de base de données dans la liste de connexion , puis cliquez sur OK.
  10. Dans l’Explorateur de solutions, cliquez avec droit de Plans de génération de données, pointez sur Ajouter, puis cliquez sur Plan de génération de données.
  11. Dans la zone nom , tapez DataGenerationPlan1.dgen, puis cliquez sur Ajouter.
  12. Cliquez pour sélectionner le dbo de . MaxVarChar case à cocher.
  13. Dans le menu données , pointez sur le Générateur de données, puis cliquez sur Générer les données.

    Remarque Cliquez sur Oui si le vous voulez effacer le contenu des tables sélectionnées avant d’insérer de nouvelles lignes ? boîte de dialogue s’affiche.
  14. Dans la boîte de dialogue se connecter à la base de données , cliquez sur la connexion de base de données dans la liste de connexion , puis cliquez sur OK.

    Vous recevez le message d’erreur qui est mentionné dans la section « Symptômes ».
Propriétés

ID d'article : 928965 - Dernière mise à jour : 9 janv. 2017 - Révision : 1

Commentaires