次の方法で共有


格納されている XML スキーマ コレクションを表示する

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 を使用し、他の名前空間の場合は ns1ns2 などを使用します。

XML スキーマの同じコピーを保持する場合は、XML スキーマをファイルまたはデータベース テーブルの xml 型の列に保存する必要があります。

sys.xml_schema_collections カタログ ビューは、XML スキーマ コレクションに関する情報も返します。 この情報には、コレクションの名前、作成日、およびコレクションの所有者が含まれます。

こちらもご覧ください

XML スキーマ コレクション (SQL Server)