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

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

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.