適用於:SQL Server
Azure SQL Database
Azure SQL Managed Instance
SQL database in Microsoft Fabric
SQL 資料庫專案支援從 XSD(XML 架構定義)檔案自動產生 XML 架構集合物件。 當你在專案中加入帶有適當元資料的 XSD 檔案時,建置過程會建立一個 CREATE XML SCHEMA COLLECTION 語句,讓你能在資料庫中強制執行 XML 資料驗證。
XML 結構集合在 SQL Server 中提供型別化的 XML 欄位,使資料庫引擎能依照定義的架構驗證 XML 資料並優化查詢效能。
在專案中設定 XSD 檔案
要從 XSD 檔案產生 XML 結構集合,請在您的專案檔案Build中加入.sqlproj一個包含兩個必需元資料元素的項目():
-
RelationalSchema:建立 XML 架構集合的資料庫結構(例如,
dbo) - XMLSchemaCollectionName:資料庫中產生的 XML 結構集合物件名稱
以下範例展示了如何在 SQL 專案中配置 XSD 檔案:
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build">
<Sdk Name="Microsoft.Build.Sql" Version="2.1.0" />
<PropertyGroup>
<Name>MyDatabase</Name>
<DSP>Microsoft.Data.Tools.Schema.Sql.Sql170DatabaseSchemaProvider</DSP>
<ModelCollation>1033, CI</ModelCollation>
</PropertyGroup>
<ItemGroup>
<Build Include="OrderSchema.xsd">
<RelationalSchema>dbo</RelationalSchema>
<XMLSchemaCollectionName>OrderSchemaCollection</XMLSchemaCollectionName>
</Build>
</ItemGroup>
</Project>
XSD 檔案範例
XSD 檔案定義了 XML 資料必須遵循的結構。 以下範例定義了一個包含一個或多個Order元素的元素Item結構:
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="Order">
<xs:complexType>
<xs:sequence>
<xs:element name="Item" type="xs:string" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
當專案建置時,這個 XSD 檔案會產生一個用於在dbo結構中建立OrderSchemaCollection物件的CREATE XML SCHEMA COLLECTION陳述式。
使用類型化的 XML 欄位
在定義好 XML 架構集合後,在資料表定義中引用它以建立型別化的 XML 欄位。 有型的 XML 欄位可驗證資料與結構的對照並提升查詢效能。
以下範例建立一個包含類型化 XML 欄位的資料表,該欄位使用所產生的結構集合:
CREATE TABLE dbo.Orders (
Id INT PRIMARY KEY,
OrderData XML(dbo.OrderSchemaCollection)
);
當你將資料插入 OrderData 欄位時,SQL Server 會根據 OrderSchemaCollection schema 驗證 XML。 不符合結構的無效 XML 會被拒絕。