Aracılığıyla paylaş


XML şema koleksiyonundaki izinleri reddetme

Şunlar için geçerlidir:SQL ServerAzure SQL VeritabanıAzure SQL Yönetilen ÖrneğiMicrosoft Fabric'te SQL veritabanı

Yeni bir XML şema koleksiyonu oluşturma veya var olan bir şemayı kullanma izni reddedilebilir.

XML şema koleksiyonu oluşturma iznini reddetme

XML şema koleksiyonu oluşturma iznini aşağıdaki yollarla reddedebilirsiniz:

  • İlişkisel şemada ALTER iznini reddedin.

  • İlişkisel şemadaki ve tüm kapsanan nesnelerdeki tüm izinleri reddetmek için ilişkisel şemadaki DENETİmİ reddedin.

  • VERITABANı ÜZERINDE ALTER ANY SCHEMA İZNINI ENGELLEYİN. Bu durumda, sorumlu veritabanında herhangi bir yerde XML şema koleksiyonu oluşturamaz. Ayrıca veritabanında ALTER veya CONTROL izninin reddedilmesi, veritabanındaki tüm nesneler üzerindeki tüm izinleri reddeder.

XML şema koleksiyonu nesnesinde izinleri reddetme

Var olan bir XML şema koleksiyonunda reddedilebilen izinler ve sonuçlar aşağıdadır:

  • ALTER izninin reddedilmesi, sorumlunun XML şema koleksiyonunun içeriğini değiştirme yeteneğini reddeder.

  • CONTROL izninin reddedilmesi, sorumlunun XML şema koleksiyonunda herhangi bir işlem gerçekleştirme becerisini reddeder.

  • REFERENCES izninin reddedilmesi, bir ilke, XML şema koleksiyonunu kullanarak XML türü sütunları ve parametreleri yazma veya kısıtlama yeteneğinden mahrum eder. Ayrıca, sorumlunun diğer XML şema koleksiyonlarından bu XML şema koleksiyonuna başvurabilmesini de reddeder.

  • VIEW DEFINITION izninin reddedilmesi, sorumlunun bir XML şema koleksiyonunun içeriğini görüntüleme becerisini reddeder.

  • EXECUTE izninin reddedilmesi, sorumlunun XML şema koleksiyonu tarafından yazılan veya kısıtlanan sütunlara, değişkenlere ve parametrelere değer ekleme veya güncelleştirme yeteneğini reddeder. Ayrıca, sorumlunun aynı xml türündeki sütun ve değişkenlerdeki değerleri sorgulama yeteneğini de reddeder.

Ö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. Kullanıcının XML şema koleksiyonu oluşturmasını engelleme

Kullanıcının XML şema koleksiyonu oluşturmasını engellemenin yollarından biri, ilişkisel şemada ALTER iznini reddetmektir. Bu, aşağıdaki örnekte gösterilir.

Örnek bir kullanıcı, TestLogin1ve veritabanı oluşturur. Ayrıca veritabanında şemaya dbo ek olarak ilişkisel bir şema oluşturur. başlangıçta, CREATE XML SCHEMA izin kullanıcının veritabanında herhangi bir yerde şema koleksiyonu oluşturmasına olanak tanır. Örnek daha sonra ALTER ilişkisel şemalardan birinde kullanıcıya erişim izni vermemektedir. Bu, kullanıcının bu ilişkisel şemada xml şeması koleksiyonu oluşturmasını engeller.

CREATE LOGIN TestLogin1 WITH password='SQLSvrPwd1';
GO
CREATE DATABASE SampleDBForSchemaPermissions;
GO
USE SampleDBForSchemaPermissions;
GO
-- Create another relational schema in the database.
CREATE SCHEMA myOtherDBSchema;
GO
CREATE USER TestLogin1;
GO
-- For TestLogin1 to create/import XML schema collection, following
-- permission needed.
-- Database-level permissions
GRANT CREATE XML SCHEMA COLLECTION TO TestLogin1;
GO
GRANT ALTER ANY SCHEMA TO TestLogin1;
GO
-- Now TestLogin1 can import an XML schema collection.
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
DROP XML SCHEMA COLLECTION myOtherDBSchema.myTestSchemaCollection;
GO
-- Now deny permission from TestLogin1 to alter myOtherDBSchema.
SETUSER;
GO
DENY ALTER ON SCHEMA::myOtherDBSchema TO TestLogin1;
GO
-- Now TestLogin1 cannot create xml schema collection.
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
-- Final cleanup
SETUSER;
GO
USE master;
GO
DROP DATABASE SampleDBForSchemaPermissions;
GO
DROP LOGIN TestLogin1;
GO

B. XML şema koleksiyonundaki izinleri reddetme

Aşağıdaki örnekte, mevcut XML şema koleksiyonundaki belirli bir iznin oturum açma için nasıl reddedilebileceği gösterilmektedir. Bu örnekte, mevcut XML şema koleksiyonunda test oturumuna REFERANSLAR izni reddedildi.

Örnek bir kullanıcı, TestLogin1ve veritabanı oluşturur. Ayrıca veritabanında şemaya dbo ek olarak ilişkisel bir şema oluşturur. başlangıçta, CREATE XML SCHEMA izin kullanıcının veritabanında herhangi bir yerde şema koleksiyonu oluşturmasına olanak tanır.

REFERENCES XML şema koleksiyonundaki izin, tabloda yazılan TestLogin1 bir sütun oluştururken şemayı kullanmanıza olanak tanırxml. REFERENCES XML şema koleksiyonundaki izin reddedilirse, bu durum XML şema koleksiyonunun kullanılmasını engeller.

CREATE LOGIN TestLogin1 WITH password='SQLSvrPwd1';
GO
CREATE DATABASE SampleDBForSchemaPermissions;
GO
USE SampleDBForSchemaPermissions;
GO
-- Create another relational schema in the database.
CREATE SCHEMA myOtherDBSchema;
GO
CREATE USER TestLogin1;
GO
-- For TestLogin1 to create/import XML schema collection, the following
-- permission is required.
-- Database-level permissions
GRANT CREATE XML SCHEMA COLLECTION TO TestLogin1;
GO
GRANT ALTER ANY SCHEMA TO TestLogin1;
GO
-- Now TestLogin1 can import an XML schema collection.
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
-- Grant permission to TestLogin1 to create a table and reference the XML schema collection.
SETUSER;
GO
GRANT CREATE TABLE TO TestLogin1;
GO
-- The user also needs REFERENCES permission to use the XML schema collection
-- to create a typed XML column (REFERENCES permission on the schema
-- collection is not needed).
GRANT REFERENCES ON XML SCHEMA COLLECTION::myOtherDBSchema.myTestSchemaCollection
TO TestLogin1;
GO

--TestLogin1 can use the schema.
CREATE TABLE T(i int, x xml (myOtherDBSchema.myTestSchemaCollection));
GO
-- Drop the table.
DROP TABLE T;
GO
-- Now deny REFERENCES permission to TestLogin1 on the schema created previously.
SETUSER;
GO
DENY REFERENCES ON XML SCHEMA COLLECTION::myOtherDBSchema.myTestSchemaCollection TO TestLogin1;

GO
-- Now TestLogin1 cannot create xml schema collection
SETUSER 'TestLogin1';
GO
-- Following statement fails. TestLogin1 does not have REFERENCES
-- permission on the XML schema collection.
CREATE TABLE T(i int, x xml (myOtherDBSchema.myTestSchemaCollection));
GO

-- Final cleanup
SETUSER;
GO
USE master;
GO
DROP DATABASE SampleDBForSchemaPermissions;
GO
DROP LOGIN TestLogin1;
GO

Ayrıca bakınız