Anzeigen einer gespeicherten XML-Schemasammlung

Gilt für:SQL ServerAzure SQL-DatenbankAzure SQL Managed Instance

Nach dem Importieren einer XML-Schemaauflistung mithilfe von CREATE XML SCHEMA COLLECTIONwerden die Schemakomponenten in den Metadaten gespeichert. Mit der intrinsischen Funktion xml_schema_namespace können Sie die XML-Schemasammlung rekonstruieren. Diese Funktion gibt eine Instanz vom Datentyp xml zurück.

So ruft beispielsweise die folgende Abfrage eine XML-Schemaauflistung (ProductDescriptionSchemaCollection) aus dem relationalen Schema 'production' der AdventureWorks2022 -Datenbank ab.

SELECT xml_schema_namespace(N'Production',N'ProductDescriptionSchemaCollection');
GO

Wenn nur ein Schema der XML-Schemaauflistung angezeigt werden soll, können Sie eine XQuery-Abfrage für das Ergebnis vom Typ xml angeben, das von xml_schema_namespacezurückgegeben wird.

SELECT xml_schema_namespace(N'RelationalSchemaName',N'XmlSchemaCollectionName').query('
/xs:schema[@targetNamespace="TargetNameSpace"]
');
GO

So ruft beispielsweise die folgende Abfrage XML-Schemainformationen zur Produktgarantie und -wartung aus der XML-Schemaauflistung ProductDescriptionSchemaCollection ab.

SELECT xml_schema_namespace(N'Production',N'ProductDescriptionSchemaCollection').query('
/xs:schema[@targetNamespace="https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelWarrAndMain"]
');
GO

Sie können auch den optionalen Zielnamespace als dritten Parameter an die xml_schema_namespace -Funktion übergeben, um ein bestimmtes Schema aus der Auflistung abzurufen, wie es in der folgenden Abfrage gezeigt wird:

SELECT xml_schema_namespace(N'Production',N'ProductDescriptionSchemaCollection', N'https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelWarrAndMain');
GO

Wenn Sie eine XML-Schemaauflistung mithilfe von CREATE XML SCHEMA COLLECTION in der Datenbank erstellen, speichert die Anweisung die Schemakomponenten in den Metadaten. Nur die von SQL Server interpretierbaren Schemakomponenten werden gespeichert. Kommentare, Anmerkungen oder Nicht-XSD-Attribute werden nicht gespeichert. Daher ist das von xml_schema_namespace rekonstruierte Schema zwar hinsichtlich seiner Funktionalität mit dem ursprünglichen Schema gleichwertig, sein Erscheinungsbild jedoch nicht unbedingt identisch. Beispielsweise werden Sie die Präfixe des ursprünglichen Schemas nicht wiederfinden. Das von xml_schema_namespace zurückgegebene Schema verwendet t als Präfix für den Zielnamespace und ns1, ns2usw. für andere Namespaces.

Wenn Sie eine identische Kopie des XML-Schemas aufbewahren möchten, sollten Sie das XML-Schema in einer Datei oder in einer Datenbanktabelle in einer Spalte vom Typ xml speichern.

Die sys.xml_schema_collections -Katalogsicht gibt auch Informationen zu XML-Schemaauflistungen zurück. Zu diesen Informationen gehören der Name der Auflistung, das Erstellungsdatum und der Besitzer der Auflistung.

Weitere Informationen