58 votes

Comment modifier facilement une colonne SQL XML dans SQL Management Studio

J'ai une table avec une colonne XML. Cette colonne est de stocker une partie des valeurs que je garde pour la configuration de ma demande. Je l'ai créé pour avoir un plus flexible de schéma. Je ne peux pas trouver un moyen de mettre à jour cette colonne directement à partir de l'affichage de la table dans SQL Management Studio. D'autres (INT ou Varchar par exemple), les colonnes sont modifiables. Je sais que je peux écrire une instruction de mise à JOUR ou de créer un peu de code pour le mettre à jour. Mais je suis à la recherche de quelque chose de plus souple, qui permettra d'alimentation à l'utilisateur de modifier directement le XML.

Des idées?

Rappelant encore une fois: Merci de ne pas répondre Je peux écrire une application. Je sais que, Et c'est exactement ce que je suis essayez d'éviter.

38voto

Jacob Points 1049

C'est une vieille question, mais j'avais besoin de le faire aujourd'hui. Le mieux que je puisse vous arriver, c'est d'écrire une requête qui génère le code SQL qui peut être modifiée dans l'éditeur de requête - c'est un genre de boiteux, mais il vous permet d'économiser de copier/coller des trucs.

Remarque: vous devrez peut-être aller dans Outils > Options > Résultats de la Requête > Résultats de Texte et définissez le nombre maximum de caractères affichés à un nombre suffisamment grand pour s'adapter à vos champs XML.

par exemple

select 'update [table name] set [xml field name] = ''' + 
convert(varchar(max), [xml field name]) +
''' where [primary key name] = ' + 
convert(varchar(max), [primary key name]) from [table name]

qui produit beaucoup de requêtes qui ressemblent à ceci (avec quelques exemple de table des noms de champ/):

update thetable set thedata = '<root><name>Bob</name></root>' where thekey = 1

Ensuite, vous copiez ces requêtes à partir de la fenêtre des résultats de l'arrière jusqu'à la fenêtre de requête, modifier les chaînes de caractères xml, puis d'exécuter les requêtes.

(Edit: modification du 10 au max pour éviter l'erreur)

19voto

Todd Points 111

Le studio de gestion de serveur SQL manque cette fonctionnalité.

Je peux voir Homer Simpson en tant que chef de projet Microsoft se cogner la tête avec la paume de la main: "Duh!"

Bien sûr, nous voulons éditer des colonnes XML.

4voto

Paulj Points 633

J'ai fini par écrire une interface utilisateur .net c # pour traiter les données XML. L'utilisation de xsl pour l'affichage et d'un schéma xml a permis d'afficher correctement le fichier xml et de maintenir son intégrité.

edit: c # contient également la classe xmldocument qui simplifie la lecture / écriture des données.

4voto

hcris Points 9359

La réponse de @ Jacob fonctionne très bien, bien que vous deviez ajouter un REMPLACER si votre XML contient des caractères:

 select 'update [table name] set [xml field name] = ''' + 
REPLACE(convert(varchar(max), [xml field name]), '''', '''''') +
''' where [primary key name] = ' + 
convert(varchar(max), [primary key name]) from [table name]
 

0voto

Espo Points 24318

Je ne pense pas que vous puissiez utiliser l'interface graphique de Management Studio pour mettre à jour des colonnes XML sans écrire vous-même la commande UPDATE.

Une façon de permettre aux utilisateurs de mettre à jour XML-data consiste à écrire un programme basé sur .net simple (Winforms ou asp.net), puis à sélectionner / mettre à jour les données à partir de là. De cette façon, vous pouvez également nettoyer les données et les valider facilement par rapport à un schéma donné avant d'insérer / de mettre à jour les informations.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X