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.
Seperti yang dijelaskan dalam topik, xml (Transact-SQL), SQL Server menyediakan penyimpanan asli data XML melalui xml jenis data. Anda dapat secara opsional mengaitkan skema XSD dengan variabel atau kolom jenis xml melalui koleksi skema XML. Koleksi skema XML menyimpan skema XML yang diimpor dan kemudian digunakan untuk melakukan hal berikut:
Memvalidasi instans XML
Ketik data XML seperti yang disimpan dalam database
Perhatikan bahwa kumpulan skema XML adalah entitas metadata seperti tabel dalam database. Anda dapat membuat, memodifikasi, dan menghilangkannya. Skema yang ditentukan dalam pernyataan CREATE XML SCHEMA COLLECTION (Transact-SQL) secara otomatis diimpor ke objek koleksi skema XML yang baru dibuat. Anda dapat mengimpor skema atau komponen skema tambahan ke dalam objek koleksi yang ada dalam database dengan menggunakan pernyataan ALTER XML SCHEMA COLLECTION (Transact-SQL).
Seperti yang dijelaskan dalam topik, Xml yang Diketik vs. Tidak Diketik, XML yang disimpan dalam kolom atau variabel yang terkait dengan skema disebut sebagai XML yang diketik , karena skema menyediakan informasi jenis data yang diperlukan untuk data instans. SQL Server menggunakan informasi jenis ini untuk mengoptimalkan penyimpanan data.
Mesin pemrosesan kueri juga menggunakan skema untuk pemeriksaan jenis dan untuk mengoptimalkan kueri dan modifikasi data.
Selain itu, SQL Server menggunakan koleksi skema XML terkait, dalam kasus diketik xml, untuk memvalidasi instans XML. Jika instans XML mematuhi skema, database memungkinkan instans disimpan dalam sistem dengan informasi jenisnya. Jika tidak, instans akan ditolak.
Anda dapat menggunakan fungsi intrinsik XML_SCHEMA_NAMESPACE untuk mengambil koleksi skema yang disimpan dalam database. Untuk informasi selengkapnya, lihat Menampilkan Koleksi Skema XML tersimpan.
Anda juga dapat menggunakan koleksi skema XML untuk mengetik variabel, parameter, dan kolom XML.
DDL untuk Mengelola Koleksi Skema
Anda dapat membuat koleksi skema XML dalam database dan mengaitkannya dengan variabel dan kolom jenis xml . Untuk mengelola koleksi skema dalam database, SQL Server menyediakan pernyataan DDL berikut:
MEMBUAT KOLEKSI SKEMA XML (Transact-SQL) Mengimpor komponen skema ke dalam database.
ALTER XML SCHEMA COLLECTION (Transact-SQL) Memodifikasi komponen skema dalam koleksi skema XML yang ada.
HILANGKAN KOLEKSI SKEMA XML (Transact-SQL) Menghapus kumpulan skema XML lengkap dan semua komponennya.
Untuk menggunakan koleksi skema XML dan skema yang ada di dalamnya, Anda harus terlebih dahulu membuat koleksi dan skema dengan menggunakan pernyataan CREATE XML SCHEMA COLLECTION. Setelah koleksi skema dibuat, Anda kemudian dapat membuat variabel dan kolom jenis xml dan mengaitkan koleksi skema dengannya. Perhatikan bahwa setelah koleksi skema dibuat, berbagai komponen skema disimpan dalam metadata. Anda juga dapat menggunakan ALTER XML SCHEMA COLLECTION untuk menambahkan lebih banyak komponen ke skema yang ada atau menambahkan skema baru ke koleksi yang ada.
Untuk menghilangkan koleksi skema, gunakan pernyataan DROP XML SCHEMA COLLECTION. Ini menghilangkan semua skema yang terkandung dalam koleksi dan menghapus objek koleksi. Perhatikan bahwa sebelum Anda dapat menghilangkan koleksi skema, kondisi yang dijelaskan dalam DROP XML SCHEMA COLLECTION (Transact-SQL)harus dipenuhi.
Memahami Komponen Skema
Saat Anda menggunakan pernyataan CREATE XML SCHEMA COLLECTION, berbagai komponen skema diimpor ke dalam database. Komponen skema mencakup elemen skema, atribut, dan definisi jenis. Saat Anda menggunakan pernyataan DROP XML SCHEMA COLLECTION, Anda menghapus koleksi lengkap.
CREATE XML SCHEMA COLLECTION menyimpan komponen skema ke dalam berbagai tabel sistem.
Misalnya, pertimbangkan skema berikut:
<?xml version="1.0"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
targetNamespace="uri:Cust_Orders2"
xmlns="uri:Cust_Orders2" >
<xsd:attribute name="SomeAttribute" type="xsd:int" />
<xsd:complexType name="SomeType" />
<xsd:complexType name="OrderType" >
<xsd:sequence>
<xsd:element name="OrderDate" type="xsd:date" />
<xsd:element name="RequiredDate" type="xsd:date" />
<xsd:element name="ShippedDate" type="xsd:date" />
</xsd:sequence>
<xsd:attribute name="OrderID" type="xsd:ID" />
<xsd:attribute name="CustomerID" />
<xsd:attribute name="EmployeeID" />
</xsd:complexType>
<xsd:complexType name="CustomerType" >
<xsd:sequence>
<xsd:element name="Order" type="OrderType"
maxOccurs="unbounded" />
</xsd:sequence>
<xsd:attribute name="CustomerID" type="xsd:string" />
<xsd:attribute name="OrderIDList" type="xsd:IDREFS" />
</xsd:complexType>
<xsd:element name="Customer" type="CustomerType" />
</xsd:schema>
Skema sebelumnya memperlihatkan berbagai jenis komponen yang dapat disimpan dalam database. Ini termasuk SomeAttribute, , SomeType, CustomerTypeOrderType, Customer, Order, , CustomerID, OrderID, OrderDate, RequiredDate, dan ShippedDate.
Kategori Komponen
Komponen Skema yang disimpan dalam database termasuk dalam kategori berikut:
ELEMEN
ATRIBUT
TYPE (untuk jenis sederhana atau kompleks)
ATTRIBUTEGROUP
MODELGROUP
Contohnya:
SomeAttribute adalah komponen ATTRIBUTE.
SomeType, OrderType, dan CustomerType adalah komponen TYPE.
Pelanggan adalah komponen ELEMENT.
Saat Anda mengimpor skema ke dalam database, SQL Server tidak menyimpan skema itu sendiri. Sebaliknya, SQL Server menyimpan berbagai komponen individu. Artinya, <tag Skema> tidak disimpan, hanya komponen yang ditentukan di dalamnya yang dipertahankan. Semua elemen skema tidak dipertahankan. <Jika tag Skema> berisi atribut yang menentukan perilaku default komponennya, atribut ini dipindahkan ke komponen skema di dalamnya selama proses impor, seperti yang ditunjukkan dalam tabel berikut.
| Nama atribut | Aktivitas |
|---|---|
| attributeFormDefault | Atribut formulir diterapkan ke semua deklarasi atribut dalam skema di mana belum ada dan nilai diatur ke nilai atribut AttributeFormDefault . |
| elementFormDefault | Atribut formulir diterapkan ke semua deklarasi elemen dalam skema di mana belum ada dan nilai diatur ke nilai atribut elementFormDefault . |
| blockDefault | Atribut blok diterapkan ke semua deklarasi elemen dan definisi jenis di mana belum ada dan nilai diatur ke nilai atribut blockDefault . |
| finalDefault | Atribut akhir diterapkan ke semua deklarasi elemen dan definisi jenis di mana belum ada dan nilai diatur ke nilai atribut finalDefault . |
| targetNamespace | Informasi tentang komponen milik namespace target disimpan dalam metadata. |
Izin pada Koleksi Skema XML
Anda harus memiliki izin yang diperlukan untuk melakukan hal berikut:
Membuat/memuat koleksi skema XML
Mengubah koleksi skema XML
Menghilangkan koleksi skema XML
Gunakan koleksi skema XML untuk mengetik
xmlkolom, variabel, dan parameter, atau menggunakannya dalam batasan tabel atau kolom
Model keamanan SQL Server memungkinkan izin CONTROL pada setiap objek. Penerima izin ini memperoleh semua izin lain pada objek. Pemilik objek juga memiliki semua izin pada objek .
Pemilik dan penerima izin CONTROL pada objek dapat memberikan izin apa pun pada objek. Pengguna yang bukan pemilik dan tidak memiliki izin CONTROL masih dapat memberikan izin pada objek ketika WITH GRANT OPTION ditentukan. Misalnya, asumsikan Pengguna A memiliki izin REFERENSI pada koleksi skema XML S, melalui WITH GRANT OPTION, tetapi tidak ada izin lain pada S. Pengguna A dapat memberikan izin REFERENSI B Pengguna pada kumpulan skema S.
Model keamanan juga memungkinkan izin untuk membuat dan menggunakan koleksi skema XML atau mentransfer kepemilikan dari satu pengguna ke pengguna lain. Topik berikut ini menjelaskan izin pengumpulan skema XML.
Memberikan Izin pada Koleksi Skema XML
Topik ini membahas cara memberikan izin untuk membuat koleksi skema XML dan cara memberikan izin pada objek kumpulan skema XML.
Mencabut Izin pada Koleksi Skema XML
Topik ini membahas cara mencabut izin dapat digunakan untuk mencegah pembuatan kumpulan skema XML dan cara mencabut izin pada objek kumpulan skema XML.
Tolak Izin pada Koleksi Skema XML
Topik ini membahas cara menolak izin untuk membuat kumpulan skema XML dan menolak izin pada objek kumpulan skema XML.
Mendapatkan Informasi tentang Skema XML dan Koleksi Skema
Koleksi skema XML dijumlahkan dalam tampilan katalog, sys.xml_schema_collections. Koleksi skema XML "sys" ditentukan oleh sistem. Ini berisi namespace yang telah ditentukan sebelumnya yang dapat digunakan di semua koleksi skema XML yang ditentukan pengguna tanpa harus memuatnya secara eksplisit. Daftar ini berisi namespace untuk xml, xs, xsi, fn, dan xdt. Dua tampilan katalog lainnya sys.xml_schema_namespaces, yang menghitung semua namespace dalam setiap koleksi skema XML, dan sys.xml_components, yang menghitung semua komponen skema XML dalam setiap skema XML.
Fungsi bawaan XML_SCHEMA_NAMESPACE, schemaName, XmlSchemacollectionName, namespace-uri, menghasilkan instans xml jenis data.. Instans ini berisi fragmen skema XML untuk skema yang terkandung dalam koleksi skema XML, kecuali skema XML yang telah ditentukan sebelumnya.
Anda dapat menghitung konten kumpulan skema XML dengan cara berikut:
Tulis kueri Transact-SQL pada tampilan katalog yang sesuai untuk koleksi skema XML.
Gunakan fungsi bawaan XML_SCHEMA_NAMESPACE(). Anda dapat menerapkan
xmlmetode jenis data pada output fungsi ini. Namun, Anda tidak dapat mengubah skema XML yang mendasar.
Ini diilustrasikan dalam contoh berikut.
Contoh: Menghitung Namespace XML dalam Koleksi Skema XML
Gunakan kueri berikut untuk koleksi skema XML "myCollection":
SELECT XSN.name
FROM sys.xml_schema_collections XSC JOIN sys.xml_schema_namespaces XSN
ON (XSC.xml_collection_id = XSN.xml_collection_id)
WHERE XSC.name = 'myCollection'
Contoh: Menghitung Konten Koleksi Skema XML
Pernyataan berikut menghitung konten koleksi skema XML "myCollection" dalam skema relasional, dbo.
SELECT XML_SCHEMA_NAMESPACE (N'dbo', N'myCollection')
Skema XML individual dalam koleksi dapat diperoleh sebagai xml instans jenis data dengan menentukan namespace layanan target sebagai argumen ketiga untuk XML_SCHEMA_NAMESPACE(). Hal ini ditunjukkan di contoh berikut.
Contoh: Mengeluarkan Skema yang Ditentukan dari Koleksi Skema XML
Pernyataan berikut menghasilkan skema XML dengan namespace target "https://www.microsoft.com/books" dari koleksi skema XML "myCollection" dalam skema relasional, dbo.
SELECT XML_SCHEMA_NAMESPACE (N'dbo', N'myCollection',
N'https://www.microsoft.com/books')
Mengkueri Skema XML
Anda bisa mengkueri skema XML yang telah Anda muat ke dalam koleksi skema XML dengan cara berikut:
Tulis kueri Transact-SQL pada tampilan katalog untuk namespace skema XML.
Buat tabel yang berisi
xmlkolom tipe data untuk menyimpan skema XML Anda dan juga memuatnya ke dalam sistem jenis XML. Anda bisa mengkueri kolom XML dengan menggunakanxmlmetode tipe data. Selain itu, Anda dapat membangun indeks XML pada kolom ini. Namun, dengan pendekatan ini, aplikasi harus mempertahankan konsistensi antara skema XML yang disimpan di kolom XML dan sistem jenis XML. Misalnya, jika Anda menghilangkan namespace skema XML dari sistem jenis XML, Anda juga harus menghilangkannya dari tabel untuk mempertahankan konsistensi.
Lihat juga
Menampilkan Kumpulan Skema XML Tersimpan
Pra-proses Skema untuk Menggabungkan Skema yang Disertakan
Persyaratan dan Batasan untuk Koleksi Skema XML di Server