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