CREATE XML SCHEMA COLLECTION を使用して XML スキーマ コレクションをインポートすると、スキーマ コンポーネントがメタデータに格納されます。
xml_schema_namespace組み込み関数を使用して、XML スキーマ コレクションを再構築できます。 この関数は、 xml
データ型インスタンスを返します。
たとえば、次のクエリでは、AdventureWorks2012 データベースの実稼働リレーショナル スキーマから XML スキーマ コレクション (ProductDescriptionSchemaCollection
) を取得します。
SELECT xml_schema_namespace(N'Production',N'ProductDescriptionSchemaCollection')
GO
XML スキーマ コレクションから 1 つのスキーマのみを表示する場合は、xml_schema_namespace
によって返されるxml
型の結果に対して XQuery を指定できます。
SELECT xml_schema_namespace(N'RelationalSchemaName',N'XmlSchemaCollectionName').query('
/xs:schema[@targetNamespace="TargetNameSpace"]
')
GO
たとえば、次のクエリは、 ProductDescriptionSchemaCollection
XML スキーマ コレクションから製品の保証とメンテナンスの XML スキーマ情報を取得します。
SELECT xml_schema_namespace(N'Production',N'ProductDescriptionSchemaCollection').query('
/xs:schema[@targetNamespace="https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelWarrAndMain"]
')
GO
次のクエリに示すように、省略可能なターゲット名前空間を 3 番目のパラメーターとして xml_schema_namespace
関数に渡して、コレクションから特定のスキーマを取得することもできます。
SELECT xml_schema_namespace(N'Production',N'ProductDescriptionSchemaCollection', N'https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelWarrAndMain')
GO
データベースで CREATE XML SCHEMA COLLECTION を使用して XML スキーマ コレクションを作成すると、ステートメントによってスキーマ コンポーネントがメタデータに格納されます。 SQL Server が認識するスキーマ コンポーネントのみが格納されることに注意してください。 コメント、注釈、または XSD 以外の属性は格納されません。 したがって、 xml_schema_namespace によって再構築されたスキーマは、機能的には元のスキーマと同等ですが、必ずしも同じように見えるわけではありません。 たとえば、元のスキーマと同じプレフィックスは表示されません。 xml_schema_namespaceによって返されるスキーマでは、ターゲット名前空間のプレフィックスとして t を使用し、他の名前空間の場合は ns1、ns2 などを使用します。
XML スキーマの同じコピーを保持する場合は、XML スキーマをファイルまたはデータベース テーブルの xml
型の列に保存する必要があります。
sys.xml_schema_collections カタログ ビューは、XML スキーマ コレクションに関する情報も返します。 この情報には、コレクションの名前、作成日、およびコレクションの所有者が含まれます。