Отмена разрешений для коллекции схем XML

Разрешение на создание коллекции схем XML можно отменить с помощью одного из следующих способов:

  • Отмените разрешение ALTER для реляционной схемы. Затем субъект не может создать коллекцию XML-схем в реляционной схеме. Однако основной субъект все еще может сделать это в других реляционных структурах этой же базы данных.

  • Отмените разрешение ALTER ANY SCHEMA для базы данных субъекта. Затем субъект не может создать коллекцию схем XML в любом месте базы данных.

  • Отмените разрешение CREATE XML SCHEMA COLLECTION или ALTER XML SCHEMA COLLECTION в базе данных для указанного объекта. Это запрещает субъекту импортировать коллекцию xml-схем в базе данных. Отмена разрешения ALTER или CONTROL для базы данных имеет тот же эффект.

Отмена разрешений для существующего объекта коллекции схем XML

Ниже приведены разрешения, которые можно отменить в коллекции схем XML и результатах:

  • Отмена разрешения ALTER отменяет возможность субъекта изменять содержимое коллекции схем XML.

  • Отмена разрешения TAKE OWNERSHIP отменяет возможность субъекта передавать владение коллекцией схем XML.

  • Отмена разрешения REFERENCES лишает пользователя возможности использовать коллекцию схем XML для типизации или ограничения столбцов XML-типа в таблицах, представлениях и параметрах. Он также отменяет разрешение на ссылку на эту коллекцию схем из других коллекций схем XML.

  • Отмена разрешения VIEW DEFINITION отменяет возможность субъекта просматривать содержимое коллекции схем XML.

  • Отмена разрешения EXECUTE отменяет возможность субъекта вставлять или обновлять значения в столбцах, переменных и параметрах, типизированных или ограниченных коллекцией XML. Он также отменяет возможность запрашивать такие столбцы типа XML , переменные или параметры.

Примеры

Представленные в следующих примерах сценарии отображают организацию разрешений на XML-схемы. В каждом примере создается соответствующая тестовая база данных, реляционные схемы и имена входа. Этим учетным записям предоставляются необходимые разрешения на коллекции XML-схем. Каждый пример выполняет необходимые действия по очистке в конце.

А. Отмена разрешений на создание коллекции схем XML

В этом примере создаются логин и пробная база данных. Она также добавляет реляционную схему в базу данных. Изначально учетной записи предоставляется разрешение на изменение (ALTER) в отношении реляционных схем, а также другие необходимые разрешения для создания коллекций схем XML. Затем этот пример отменяет разрешение ALTER на одну из реляционных схем в базе данных. Это предотвращает создание коллекции схем 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  

См. также

XML-данные (SQL Server)
Сравнение типизированного и нетипизированного XML
Коллекции XML-схем (SQL Server)
Требования и ограничения для коллекций схем XML на сервере