Condividi tramite


Viste del catalogo XML

Sono disponibili viste del catalogo che forniscono informazioni sui metadati per l'utilizzo dei valori XML. Alcune di queste viste sono illustrate nella sezione seguente.

Indici XML

Le voci di un indice XML compaiono nella vista del catalogo sys.indexes con tipo di indice 3. La colonna del nome contiene il nome dell'indice XML.

Gli indici XML vengono registrati anche nella vista del catalogo sys.xml_indexes, che contiene tutte le colonne della vista sys.indexes e alcune colonne specifiche, utili per gli indici XML. Il valore NULL nella colonna secondary_type indica un indice XML primario, mentre i valori 'P', 'R' e 'V' indicano, rispettivamente, indici XML secondari di tipo PATH, PROPERTY e VALUE.

Per ottenere informazioni sullo spazio utilizzato dagli indici XML è possibile utilizzare la funzione con valori di tabella sys.dm_db_index_physical_stats, che restituisce informazioni come il numero di pagine del disco occupate, le dimensioni medie delle righe in byte e il numero dei record, per tutti i tipi di indici, inclusi gli indici XML. Tali informazioni sono disponibili per ogni partizione del database. Gli indici XML utilizzano lo stesso schema di partizionamento e la stessa funzione di partizionamento della tabella di base.

Recupero di raccolte di schemi XML

Le raccolte di schemi XML sono enumerate nella vista del catalogo sys.xml_schema_collections. La raccolta di schemi XML "sys" è definita dal sistema e contiene gli spazi dei nomi predefiniti che è possibile utilizzare in tutte le raccolte di schemi XML definite dall'utente senza doverli caricare in modo esplicito. Tale elenco contiene gli spazi dei nomi per xml, xs, xsi, fn e xdt. Sono disponibili altre due viste del catalogo: sys.xml_schema_namespaces, che enumera tutti gli spazi dei nomi in ogni raccolta di schemi XML, e sys.xml_components, che enumera tutti i componenti degli schemi XML presenti in ognuno.

La funzione predefinita XML_SCHEMA_NAMESPACE, schemaName, XmlSchemacollectionName, namespace-uri restituisce un'istanza del tipo di dati xml. Tale istanza contiene frammenti di schema XML per gli schemi inclusi in una raccolta di schemi XML, ad eccezione degli schemi XML predefiniti.

Per enumerare il contenuto di una raccolta di schemi XML è possibile:

  • Scrivere query Transact-SQL sulle viste del catalogo appropriate per le raccolte di schemi XML.

  • Utilizzare la funzione predefinita XML_SCHEMA_NAMESPACE(). È possibile applicare i metodi per il tipo di dati xml all'output di questa funzione, ma non è possibile modificare gli schemi XML sottostanti.

Queste tecniche di enumerazione sono illustrate negli esempi seguenti.

Esempio: enumerazione degli spazi dei nomi XML in un insieme di schemi XML

Per la raccolta di schemi XML "myCollection" utilizzare la query seguente:

SELECT XSN.name
FROM    sys.xml_schema_collections XSC JOIN sys.xml_schema_namespaces XSN
    ON (XSC.xml_collection_id = XSN.xml_collection_id)
WHERE    XSC.name = 'myCollection'   

Esempio: enumerazione del contenuto di un insieme di schemi XML

L'istruzione seguente enumera il contenuto della raccolta di schemi XML "myCollection" nell'ambito dello schema relazionale dbo.

SELECT XML_SCHEMA_NAMESPACE (N'dbo', N'myCollection')

I singoli schemi XML inclusi nella raccolta possono essere ottenuti come istanze del tipo di dati xml, specificando lo spazio dei nomi di destinazione come terzo argomento della funzione XML_SCHEMA_NAMESPACE(), come illustrato nell'esempio seguente.

Esempio: restituzione di uno schema specifico da un insieme di schemi XML

L'istruzione seguente restituisce lo schema XML con spazio dei nomi di destinazione "https://www.microsoft.com/books" dalla raccolta di schemi XML "myCollection" nell'ambito dello schema relazionale dbo.

SELECT XML_SCHEMA_NAMESPACE (N'dbo', N'myCollection', 
N'https://www.microsoft.com/books')

Esecuzione di query su schemi XML

Per eseguire query sugli schemi XML caricati in raccolte di schemi XML è possibile:

  • Scrivere query Transact-SQL sulle viste del catalogo per gli spazi dei nomi degli schemi XML.

  • Creare una tabella contenente una colonna con tipo di dati xml per archiviare gli schemi XML e quindi caricarli nel sistema di tipi XML. Per eseguire query sulla colonna XML, è possibile utilizzare i metodi per il tipo di dati xml. È inoltre possibile creare un indice XML su questa colonna. Questo approccio richiede tuttavia che l'applicazione mantenga la consistenza tra gli schemi XML archiviati nella colonna XML e il sistema di tipi XML. Se ad esempio si elimina lo spazio dei nomi di uno schema XML dal sistema di tipi XML, per mantenere la consistenza sarà necessario eliminarlo anche dalla tabella.

Vedere anche

Altre risorse