Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Berlaku untuk: SQL Server
Azure SQL Database
Ketika kueri XPath ditentukan terhadap skema XSD, informasi utama diperlukan dalam banyak kasus untuk mendapatkan bersarang yang tepat dalam hasilnya. Menentukan anotasi sql:key-fields adalah cara untuk memastikan bahwa hierarki yang sesuai dihasilkan.
Catatan
Untuk memastikan bersarang yang tepat, disarankan agar Anda menentukan sql:key-fields untuk elemen yang memetakan ke tabel. XML yang dihasilkan sensitif terhadap urutan tataan hasil yang mendasar. Jika sql:key-fields tidak ditentukan, XML yang dihasilkan mungkin tidak terbentuk dengan benar.
Nilai sql:key-fields mengidentifikasi kolom yang secara unik mengidentifikasi baris dalam relasi. Jika lebih dari satu kolom diperlukan untuk mengidentifikasi baris secara unik, nilai kolom dibatasi oleh spasi.
Anda harus menggunakan anotasi sql:key-fields saat elemen berisi <sql:relationship> yang ditentukan antara elemen dan elemen turunan tetapi tidak menyediakan kunci utama tabel yang ditentukan dalam elemen induk.
Contoh
Untuk membuat sampel kerja menggunakan contoh berikut, Anda harus memenuhi persyaratan tertentu. Untuk informasi selengkapnya, lihat Persyaratan untuk Menjalankan Contoh SQLXML.
J. Menghasilkan berlapis yang sesuai ketika <sql:relationship> tidak memberikan informasi yang memadai
Contoh ini menunjukkan di mana sql:key-fields harus ditentukan.
Pertimbangkan skema berikut. Skema menentukan hierarki antara <elemen Pesanan> dan< Pelanggan> di mana< elemen Pesanan> adalah induk dan< elemen Pelanggan> adalah anak.
<Tag sql:relationship> digunakan untuk menentukan hubungan induk-anak. Ini mengidentifikasi CustomerID dalam tabel Sales.SalesOrderHeader sebagai kunci induk yang mengacu pada kunci anak CustomerID dalam tabel Sales.Customer. Informasi yang diberikan dalam <sql:relationship> tidak cukup untuk mengidentifikasi baris secara unik dalam tabel induk (Sales.SalesOrderHeader). Oleh karena itu, tanpa anotasi sql:key-fields , hierarki yang dihasilkan tidak akurat.
Dengan sql:key-fields yang ditentukan pada <Order>, anotasi secara unik mengidentifikasi baris di induk (tabel Sales.SalesOrderHeader), dan elemen turunannya muncul di bawah induknya.
Ini adalah skema:
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:sql="urn:schemas-microsoft-com:mapping-schema">
<xsd:annotation>
<xsd:appinfo>
<sql:relationship name="OrdCust"
parent="Sales.SalesOrderHeader"
parent-key="CustomerID"
child="Sales.Customer"
child-key="CustomerID" />
</xsd:appinfo>
</xsd:annotation>
<xsd:element name="Order" sql:relation="Sales.SalesOrderHeader"
sql:key-fields="SalesOrderID">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Customer" sql:relation="Sales.Customer"
sql:relationship="OrdCust" >
<xsd:complexType>
<xsd:attribute name="CustID" sql:field="CustomerID" />
<xsd:attribute name="SoldBy" sql:field="SalesPersonID" />
</xsd:complexType>
</xsd:element>
</xsd:sequence>
<xsd:attribute name="SalesOrderID" type="xsd:integer" />
<xsd:attribute name= "CustomerID" type="xsd:string" />
</xsd:complexType>
</xsd:element>
</xsd:schema>
Untuk membuat sampel kerja skema ini
Salin kode skema di atas dan tempelkan ke dalam file teks. Simpan file sebagai KeyFields1.xml.
Salin templat berikut dan tempelkan ke dalam file teks. Simpan file sebagai KeyFields1T.xml di direktori yang sama tempat Anda menyimpan KeyFields1.xml. Kueri XPath dalam templat mengembalikan semua <elemen Pesanan> dengan CustomerID kurang dari 3.
<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql"> <sql:xpath-query mapping-schema="KeyFields1.xml"> /Order[@CustomerID < 3] </sql:xpath-query> </ROOT>Jalur direktori yang ditentukan untuk skema pemetaan (KeyFields1.xml) relatif terhadap direktori tempat templat disimpan. Jalur absolut juga dapat ditentukan, misalnya:
mapping-schema="C:\MyDir\KeyFields1.xml"Buat dan gunakan Skrip Pengujian SQLXML 4.0 (Sqlxml4test.vbs) untuk menjalankan templat.
Untuk informasi selengkapnya, lihat Menggunakan ADO untuk Menjalankan Kueri SQLXML.
Ini adalah kumpulan hasil parsial:
<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">
<Order SalesOrderID="43860" CustomerID="1">
<Customer CustID="1" SoldBy="280"/>
</Order>
<Order SalesOrderID="44501" CustomerID="1">
<Customer CustID="1" SoldBy="280"/>
</Order>
<Order SalesOrderID="45283" CustomerID="1">
<Customer CustID="1" SoldBy="280"/>
</Order>
.....
</ROOT>
B. Menentukan sql:key-fields untuk menghasilkan bersarang yang tepat dalam hasil
Dalam skema berikut, tidak ada hierarki yang ditentukan menggunakan <sql:relationship>. Skema masih memerlukan penentuan anotasi sql:key-fields untuk mengidentifikasi karyawan secara unik di tabel HumanResources.Employee.
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:sql="urn:schemas-microsoft-com:mapping-schema">
<xsd:element name="HumanResources.Employee" sql:key-fields="EmployeeID" >
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Title">
<xsd:complexType>
<xsd:simpleContent>
<xsd:extension base="xsd:string">
<xsd:attribute name="EmployeeID" type="xsd:integer" />
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
Untuk membuat sampel kerja skema ini
Salin kode skema di atas dan tempelkan ke dalam file teks. Simpan file sebagai KeyFields2.xml.
Salin templat berikut dan tempelkan ke dalam file teks. Simpan file sebagai KeyFields2T.xml di direktori yang sama tempat Anda menyimpan KeyFields2.xml. Kueri XPath dalam templat mengembalikan semua elemen HumanResources.Employee>:<
<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql"> <sql:xpath-query mapping-schema="KeyFields2.xml"> /HumanResources.Employee </sql:xpath-query> </ROOT>Jalur direktori yang ditentukan untuk skema pemetaan (KeyFields2.xml) relatif terhadap direktori tempat templat disimpan. Jalur absolut juga dapat ditentukan, misalnya:
mapping-schema="C:\MyDir\KeyFields2.xml"Buat dan gunakan Skrip Pengujian SQLXML 4.0 (Sqlxml4test.vbs) untuk menjalankan templat.
Untuk informasi selengkapnya, lihat Menggunakan ADO untuk Menjalankan Kueri SQLXML.
Ini adalah hasilnya:
<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">
<HumanResources.Employee>
<Title EmployeeID="1">Production Technician - WC60</Title>
</HumanResources.Employee>
<HumanResources.Employee>
<Title EmployeeID="2">Marketing Assistant</Title>
</HumanResources.Employee>
<HumanResources.Employee>
<Title EmployeeID="3">Engineering Manager</Title>
</HumanResources.Employee>
...
</ROOT>