IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MS SQL Server Discussion :

[SQL Server 2008] changer encodage d'une valeur par défaut


Sujet :

MS SQL Server

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 42
    Points : 33
    Points
    33
    Par défaut [SQL Server 2008] changer encodage d'une valeur par défaut
    Bonjour,
    Dans mes travaux de développement j'ai besoin d'un champ XML. Dans mes premiers travaux je n'ai pas fait de déclaration d'encodage particulière à part dans la valeur par défaut de mon champ:
    Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
    '<?xml version="1.0" encoding="utf-8"?><Catalogue xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><Entree></Entree></Catalogue>'

    Pour attaquer cette base de données je passe par Entity Framework qui m'a levé des erreurs en m'indiquant que cet encodage n'était pas supporté. Je suis donc passé à de l'encodage utf-16 dans les chaînes que j'utilisais pour mes requêtes.

    Jusque là tout fonctionnais bien sauf quand j'ai voulus changer la valeur par défaut du champ, pour que l'en-tête corresponde aux données, en:
    Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
    '<?xml version="1.0" encoding="utf-16"?><Catalogue xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><Entree></Entree></Catalogue>'
    L'erreur suivante est levée:
    Analyse XML*: ligne 1, caractère 39, impossible de modifier le codage

    Mes recherches n'ont rien apporté et la seule solution que j'ai trouvée actuellement et de supprimer toutes les tables qui ont on eu un champ XML car la simple suppression du champ XML n'a pas l'air de suffire.

    Aussi, voici ma question: Savez vous comment je pourrais changer cette valeur par défaut sans supprimer mes tables (besoin de conserver les autres données).

  2. #2
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Points : 12 371
    Points
    12 371
    Par défaut
    Bonjour,

    Effectivement l'encodage UTF-16 n'est pas supporté par SQL Server 2008; il l'est seulement depuis la version 2012.

    Supprimer les colonnes pour réaliser un stockage dans une colonne de type chaîne de caractères n'y changera rien; en revanche peut-être qu'un stockage en varbinary(max) vous arrangera, mais il vous empêchera la manipulation directe du document XML avec SQLXML et XQuery, si vous en avez besoin.

    Cela dit, en flânant un peu sur Internet, on trouve des bouts de code pour Entity Framework qui font la conversion UTF-8 vers UTF-16

    @++

Discussions similaires

  1. Réponses: 2
    Dernier message: 27/04/2014, 14h41
  2. Réponses: 22
    Dernier message: 30/06/2011, 15h48
  3. SQL SERVER 2008 Impossible de créer une nouvelle connexion
    Par LhIaScZkTer dans le forum Administration
    Réponses: 7
    Dernier message: 10/12/2010, 11h40
  4. Réponses: 6
    Dernier message: 14/02/2006, 20h53

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo