none
SQL Server 2012 Caractère spécial non supporté par T-SQL RRS feed

  • Question

  • Bonjour,

    J’ai scripté une table d'une base de données SQL Server, j'ai spécifié l'import de données au niveau du script sauf que lorsque j'ai lancé ce script sur une base de données SQL Server il m'affiche un problème de côte pour le champ « Libelle » qui est déclaré en varchar(50), après « investigation » j’ai ce bout de code qui est à l’origine de l’erreur :<o:p></o:p>

    Sous Notepad:

    

    Sous Management Studio:

    INSERT [dbo].[MaTable] ([Id], [Reference], [IdType], [Libelle]) 
    VALUES (4669, N'Non visible', 50, N' ')

    Lorsque j'ai voulu copier le code voila ce que j'ai copié (il reprend pas la fin de la req: " ')" )

    INSERT [dbo].[MaTable] ([Id], [Reference], [IdType], [Libelle]) 
    VALUES (4669, N'Non visible', 50, N'

    J'ai vérifié dans labase origine le contenu du champ est vide mais pas null !!!

    Merci d'avance pour vos réponses.

    jeudi 19 septembre 2013 12:30

Réponses

  • Bonjour

    Je dirais que le problème n'est pas dans la génération du scripte, mais au niveau du données dans la BD source.

    A priori, dans la BD source vous  avez un caractère 0 - NUL en ASCII   (voir ici les caractères ASCII). Il n’est pas bien interprété par Management Studio.

    Donc la solution sera de remplacer ce 0 avec la chaine vide dans la BD source.

    Cordialement,


    Aurel BERA, MSFT
    MSDN Community Support. LE CONTENU EST FOURNI "TEL QUEL" SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE.
    S'il vous plaît n'oubliez pas de "Marquer comme réponse" les réponses qui ont résolu votre problème. C'est une voie commune pour reconnaître ceux qui vous ont aidé, et rend plus facile pour les autres visiteurs de trouver plus tard la résolution.

    jeudi 19 septembre 2013 13:18
    Modérateur

Toutes les réponses

  • Bonjour

    Je dirais que le problème n'est pas dans la génération du scripte, mais au niveau du données dans la BD source.

    A priori, dans la BD source vous  avez un caractère 0 - NUL en ASCII   (voir ici les caractères ASCII). Il n’est pas bien interprété par Management Studio.

    Donc la solution sera de remplacer ce 0 avec la chaine vide dans la BD source.

    Cordialement,


    Aurel BERA, MSFT
    MSDN Community Support. LE CONTENU EST FOURNI "TEL QUEL" SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE.
    S'il vous plaît n'oubliez pas de "Marquer comme réponse" les réponses qui ont résolu votre problème. C'est une voie commune pour reconnaître ceux qui vous ont aidé, et rend plus facile pour les autres visiteurs de trouver plus tard la résolution.

    jeudi 19 septembre 2013 13:18
    Modérateur
  • Bonjour Aurel,

    Vous avez tout à fait raison, en fait j'ai ajouté la clause WHERE suivante: 

    WHERE Libelle NOT IN (CHAR(0),CHAR(1))

    et j'ai aucune ligne de la table concernée ce qui confirme que les valeurs du champ en question sont un mixte de 0-NUL et 1-SOH en ASCII.

    Merci pour votre réponse précieuse, je l'ai validé

    Cordialement,



    jeudi 19 septembre 2013 13:49
  • Ce problème c'est résolu, mais une bonne idée peut être d’investiguer comment ces caractères ont arrivée dans la BD. Même si vous faites la correction des données existantes dans l’avenir vous pouvez toujours avoir de nouveau ces caractères dans ce champ.

    Cordialement,


    Aurel BERA, MSFT
    MSDN Community Support. LE CONTENU EST FOURNI "TEL QUEL" SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE.
    S'il vous plaît n'oubliez pas de "Marquer comme réponse" les réponses qui ont résolu votre problème. C'est une voie commune pour reconnaître ceux qui vous ont aidé, et rend plus facile pour les autres visiteurs de trouver plus tard la résolution.

    jeudi 19 septembre 2013 14:11
    Modérateur