Bagikan melalui


Mencabut Izin pada Koleksi Skema XML

Izin untuk membuat kumpulan skema XML dapat dicabut dengan menggunakan salah satu hal berikut ini:

  • Cabut izin ALTER untuk skema relasional. Kemudian, pemangku kepentingan tidak dapat membuat koleksi skema XML di dalam skema relasional. Namun, prinsipal masih dapat melakukannya dalam skema relasional lain dalam database yang sama.

  • Cabut hak Mengubah Skema Apapun pada database untuk prinsipal. Kemudian, prinsipal tidak dapat membuat kumpulan skema XML di mana saja dalam database.

  • Cabut izin CREATE XML SCHEMA COLLECTION atau ALTER XML SCHEMA COLLECTION pada database untuk prinsipal. Ini mencegah prinsipal mengimpor kumpulan skema XML dalam database. Mencabut izin ALTER atau CONTROL pada database memiliki efek yang sama.

Mencabut Izin pada Objek Koleksi Skema XML yang Sudah Ada

Berikut ini adalah izin yang dapat dicabut pada kumpulan skema XML dan hasilnya:

  • Mencabut izin ALTER mencabut kemampuan prinsipal untuk memodifikasi konten koleksi skema XML.

  • Mencabut izin TAKE OWNERSHIP mencabut kemampuan prinsipal untuk mentransfer kepemilikan koleksi skema XML.

  • Mencabut izin REFERENCES mencabut kemampuan prinsipal untuk menggunakan koleksi skema XML untuk menentukan tipe atau membatasi kolom tipe xml, dalam tabel dan tampilan, serta parameter. Ini juga mencabut izin untuk merujuk ke koleksi skema ini dari koleksi skema XML lainnya.

  • Mencabut izin MELIHAT DEFINISI mencabut kemampuan prinsipal untuk melihat konten kumpulan skema XML.

  • Mencabut izin EXECUTE mencabut kemampuan prinsipal untuk menyisipkan atau memperbarui nilai dalam kolom, variabel, dan parameter yang diketik atau dibatasi oleh koleksi XML. Ini juga mencabut kemampuan untuk mengkueri kolom, variabel, atau parameter jenis xml tersebut.

Contoh

Skenario dalam contoh berikut menggambarkan cara kerja izin skema XML. Setiap contoh membuat database pengujian, skema relasional, dan login yang diperlukan. Login ini diberikan izin pengumpulan skema XML yang diperlukan. Setiap contoh melakukan pembersihan yang diperlukan di akhir.

A. Mencabut izin untuk membuat kumpulan skema XML

Contoh ini membuat login dan database sampel. Ini juga menambahkan skema relasional dalam database. Awalnya, login diberikan izin ALTER pada skema relasional dan izin lain yang diperlukan untuk membuat koleksi skema XML. Contoh kemudian mencabut izin ALTER pada salah satu skema relasional dalam database. Ini mencegah proses login dari membuat koleksi skema XML.

setuser  
go  
create login TestLogin1 with password='SQLSvrPwd1'  
go  
create database SampleDBForSchemaPermissions  
go  
use SampleDBForSchemaPermissions  
go  
-- Create another relational schema in the db (in addition to dbo schema)  
CREATE SCHEMA myOtherDBSchema  
go  
CREATE USER TestLogin1  
go  
-- For TestLogin1 to create/import XML schema collection, following  
-- permission needed  
-- CREATE XML SCHEMA is a database level permission  
GRANT CREATE XML SCHEMA COLLECTION TO TestLogin1  
go  
GRANT ALTER ON SCHEMA::myOtherDBSchema TO TestLogin1  
go  
GRANT ALTER ON SCHEMA::dbo TO TestLogin1  
go  
-- Now TestLogin1 can import an XML schema collection in both relational schemas.  
setuser 'TestLogin1'  
go  
CREATE XML SCHEMA COLLECTION dbo.myTestSchemaCollection AS '<?xml version="1.0" encoding="UTF-8" ?>  
  
<xsd:schema targetNamespace="http://schemas.adventure-works.com/Additional/ContactInfo"   
            xmlns:xsd="http://www.w3.org/2001/XMLSchema"   
elementFormDefault="qualified">  
<xsd:element name="telephone" type="xsd:string" />  
</xsd:schema>'  
go  
-- TestLogin1 can create XML schema collection in myOtherDBSchema relational schema  
CREATE XML SCHEMA COLLECTION myOtherDBSchema.myTestSchemaCollection AS '<?xml version="1.0" encoding="UTF-8" ?>  
  
<xsd:schema targetNamespace="http://schemas.adventure-works.com/Additional/ContactInfo"   
            xmlns:xsd="http://www.w3.org/2001/XMLSchema"   
elementFormDefault="qualified">  
<xsd:element name="telephone" type="xsd:string" />  
</xsd:schema>'  
go  
-- Let us drop XML schema collections from both relational schemas  
DROP XML SCHEMA COLLECTION myOtherDBSchema.myTestSchemaCollection  
go  
DROP XML SCHEMA COLLECTION dbo.myTestSchemaCollection  
go  
-- now REVOKE permission from TestLogin1 to alter myOtherDBSchema  
setuser  
go  
REVOKE ALTER ON SCHEMA::myOtherDBSchema FROM TestLogin1  
go  
-- now TestLogin1 cannot create xml schema collection in myOtherDBSchema  
setuser 'TestLogin1'  
go  
CREATE XML SCHEMA COLLECTION myOtherDBSchema.myTestSchemaCollection AS '<?xml version="1.0" encoding="UTF-8" ?>  
<xsd:schema targetNamespace="http://schemas.adventure-works.com/Additional/ContactInfo"   
            xmlns:xsd="http://www.w3.org/2001/XMLSchema"   
elementFormDefault="qualified">  
<xsd:element name="telephone" type="xsd:string" />  
</xsd:schema>'  
go  
  
-- TestLogin1 can still create XML schema collections in dbo  
-- It cannot create XML schema collections anywhere in the database  
-- if we REVOKE CREATE XML SCHEMA COLLECTION permission  
SETUSER  
go  
REVOKE CREATE XML SCHEMA COLLECTION FROM TestLogin1  
go  
  
setuser 'TestLogin1'  
go  
-- the following now should fail  
CREATE XML SCHEMA COLLECTION dbo.myTestSchemaCollection AS '<?xml version="1.0" encoding="UTF-8" ?>  
<xsd:schema targetNamespace="http://schemas.adventure-works.com/Additional/ContactInfo"   
            xmlns:xsd="http://www.w3.org/2001/XMLSchema"   
elementFormDefault="qualified">  
<xsd:element name="telephone" type="xsd:string" />  
</xsd:schema>'  
go  
  
-- Final cleanup  
SETUSER  
go  
USE master  
go  
DROP DATABASE SampleDBForSchemaPermissions  
go  
DROP LOGIN TestLogin1  
Go  

Lihat Juga

XML Data (SQL Server)
Membandingkan XML Yang Dititik dengan XML Yang Tidak Dititik
Koleksi Skema XML (SQL Server)
Persyaratan dan Batasan untuk Koleksi Skema XML di Server