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