Lire sur sql server 2005 le nom de mes propres schemas xsd (xml)

Soyez le premier à donner votre avis sur cette source.

Snippet vu 5 814 fois - Téléchargée 20 fois

Contenu du snippet

cherchant a lire sur sql server le nom de mes propres schemas xml
je me suis tombé sur cette excellente source de skweeky qui a été le début de ma solution
http://www.sqlfr.com/codes/SQL-SERVER-2005-RECUPERER-CONTENU-SCHEMA-XSD_40058.aspx

Malheureusement cela me renvoyait dans un champs le contenu de tout mes schemas
or moi je voulais savoir quels etaient les noms des schema stocké dans ma base !

Ne trouvant aucune information sur msdn2 ou msdn sur XML_SCHEMA_NAMESPACE(sch.name, xsd.name) quand on ne connait pas par avance le nom du schema

j'ai trouvé en tatonnant ceci

Source / Exemple :


SELECT    XML_SCHEMA_NAMESPACE(sch.name, xsd.name) 
FROM sys.xml_schema_collections AS xsd 
    JOIN sys.schemas AS sch ON xsd.schema_id = sch.schema_id 
WHERE sch.schema_id <> 4 
and xsd.name = 'SchemaXMLBovin'
go

--(c'est l'exemple de skweeky "amélioré") quoique plus simple en mettant directement
SELECT    XML_SCHEMA_NAMESPACE(sch.name, xsd.name) 
FROM sys.xml_schema_collections AS xsd 
    JOIN sys.schemas AS sch ON xsd.schema_id = sch.schema_id 
WHERE  xsd.name = 'SchemaXMLBovin'

Je trouve bien le contenu de mon schema mais pas son nom !

c'est en faisant ceci que j'ai eu l'info qui manquait
SELECT * FROM sys.xml_schema_collections

du coup j'ai trouvé OU chercher l'info et donc la voici

SELECT xsd.name FROM sys.xml_schema_collections AS xsd 
    JOIN sys.schemas AS sch ON xsd.schema_id = sch.schema_id 
WHERE sch.schema_id <> 4 ou alors WHERE xsd.name = 'SchemaXMLqueJeCherche'  
go

notez qu'il y a bien plus simple :)

SELECT name FROM sys.xml_schema_collections 
WHERE schema_id <> 4

Conclusion :


And in the end
The love you take
Is equal to the love you make

A voir également

Ajouter un commentaire

Commentaires

Messages postés
55
Date d'inscription
vendredi 1 février 2002
Statut
Membre
Dernière intervention
8 février 2007

Merci Fabrice, erreur corrigée !
Ceci dit je n'arrive pas à recuperer le resultat en asp.net vb pour afficher toute l'arborescence de mon xsd
ma requette étant
SELECT XML_SCHEMA_NAMESPACE(sch.name, xsd.name)
FROM sys.xml_schema_collections AS xsd
JOIN sys.schemas AS sch ON xsd.schema_id = sch.schema_id
WHERE xsd.name = 'SchemaXMLBovin'
Messages postés
1765
Date d'inscription
jeudi 12 octobre 2000
Statut
Modérateur
Dernière intervention
11 décembre 2013
4
Bonjour,
la source est intéressante, mais il faut absolument préciser aux utilisateurs sur quel environnement votre script fonctionne.
En l'occurence, ce script ne fonctionne pas sur les versions antérieures à SQL Server 2005.

Cordialement
Romelard Fabrice [MVP]

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.