Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunlar için geçerlidir:SQL Server
Azure SQL Veritabanı
Azure SQL Yönetilen Örneği
Microsoft Fabric'te SQL veritabanı
XML şema koleksiyonu oluşturma izni aşağıdakilerden biri kullanılarak iptal edilebilir:
İlişkisel şema için ALTER iznini iptal edin. Ardından, sorumlu ilişkisel şemada XML şema koleksiyonu oluşturamaz. Ancak, sorumlu yine de aynı veritabanındaki diğer ilişkisel şemalarda bunu yapabilir.
Sorumlu için veritabanında ALTER ANY SCHEMA iznini iptal edin. Ardından, sorumlu veritabanının herhangi bir yerinde XML şema koleksiyonu oluşturamaz.
Sorumlu için veritabanında CREATE XML SCHEMA COLLECTION veya ALTER XML SCHEMA COLLECTION iznini iptal edin. Bu, sorumlunun veritabanında bir XML şema koleksiyonunu içeri aktarmasını engeller. Veritabanında ALTER veya CONTROL izninin iptali aynı etkiye sahiptir.
Varolan bir XML şema koleksiyonu nesnesi üzerindeki izinleri iptal etme
Xml şema koleksiyonunda iptal edilebilecek izinler ve sonuçlar aşağıdadır:
ALTER iznini iptal etmek, bir sorumlunun XML şema koleksiyonunun içeriğini değiştirme yeteneğini iptal eder.
SAHIPLIK ALMA izninin iptali, bir sorumlunun XML şema koleksiyonunun sahipliğini aktarma yeteneğini iptal eder.
BAŞVURULAR izninin iptali, bir sorumlunun xml türü sütunlarını, tablo ve görünümlerde ve parametrelerde yazmak veya kısıtlamak için XML şema koleksiyonunu kullanma yeteneğini iptal eder. Ayrıca, diğer XML şema koleksiyonlarından bu şema koleksiyonuna başvurma iznini de iptal eder.
VIEW DEFINITION izni iptal edilerek, sorumlunun XML şema koleksiyonunun içeriğini görüntüleme yeteneği iptal olur.
EXECUTE iznini iptal etmek, sorumlunun XML koleksiyonu tarafından yazılan veya kısıtlanmış sütunlara, değişkenlere ve parametrelere değer ekleme veya güncelleştirme yeteneğini iptal eder. Ayrıca bu tür xml türü sütunlarını, değişkenlerini veya parametrelerini sorgulama özelliğini de iptal eder.
Örnekler
Aşağıdaki örneklerde yer alan senaryolarda XML şema izinlerinin nasıl çalıştığı gösterilmektedir. Her örnek gerekli test veritabanını, ilişkisel şemaları ve oturum açma bilgilerini oluşturur. Bu oturum açma işlemlerine gerekli XML şema koleksiyonu izinleri verilir. Her örnek, sonunda gerekli temizlemeyi yapar.
A. XML şema koleksiyonu oluşturma izinlerini iptal etme
Bu örnek bir oturum açma ve örnek veritabanı oluşturur. Ayrıca veritabanına bir ilişkisel şema ekler. Başlangıçta, hem ilişkisel şemalarda hem de XML şema koleksiyonları oluşturmak için diğer gerekli izinlerde oturum açma işlemine ALTER izni verilir. Örnek daha sonra veritabanındaki ilişkisel şemalardan birinde ALTER iznini iptal eder. Bu, oturum açma işleminin XML şema koleksiyonu oluşturmasını engeller.
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="https://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="https://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="https://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="https://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