Предоставление разрешений на коллекции XML-схем
На создание коллекции XML-схем, а также на объекты коллекции XML-схем можно предоставлять разрешения.
Предоставление разрешений на создание коллекции XML-схем
Для создания коллекции XML-схем требуются следующие разрешения.
- Участнику требуется разрешение CREATE XML SCHEMA COLLECTION на уровне базы данных.
- Поскольку областью действия коллекции XML-схем является реляционная схема, участнику требуется разрешение ALTER на реляционную схему.
Следующие разрешения позволяют участнику создавать коллекцию XML-схем в реляционной схеме в базе данных сервера:
- разрешение CONTROL на сервере;
- разрешение ALTER ANY DATABASE на сервере;
- разрешение ALTER в базе данных;
- разрешение CONTROL в базе данных;
- разрешения ALTER ANY SCHEMA и CREATE XML SCHEMA COLLECTION в базе данных;
- разрешение ALTER или CONTROL в реляционной схеме и разрешение CREATE XML SCHEMA COLLECTION в базе данных.
Этот метод разрешений используется в следующем примере.
Владелец реляционной схемы становится владельцем коллекции XML-схем, созданной в данной схеме. Этот владелец получает полный контроль над коллекцией XML-схем. Поэтому он может изменять коллекцию XML-схем, вводить XML-столбец и удалять коллекцию XML-схем.
Предоставление разрешений на объект коллекции XML-схем
В коллекции XML-схем допускаются следующие разрешения.
- Разрешение ALTER требуется при изменении содержимого существующей коллекции XML-схем с помощью инструкции ALTER XML SCHEMA COLLECTION.
- Разрешение CONTROL дает возможность пользователю выполнять любые операции в коллекции XML-схем.
- Разрешение TAKE OWNERSHIP необходимо для передачи прав на обладание коллекцией XML-схем от одного участника к другому.
- Разрешение REFERENCE делает участника уполномоченным на использование коллекции XML-схем для типизации или ограничения типа столбцов xml в таблицах, представлениях и параметрах. Кроме того, разрешение REFERENCE необходимо при ссылке одной коллекции XML-схем на другую.
- Разрешение VIEW DEFINITION позволяет участнику выполнять запрос к содержимому коллекции XML-схем через XML_SCHEMA_NAMESPACE или представления каталогов при условии, что этот участник также имеет разрешение ALTER, REFERENCES или CONTROL на эту коллекцию.
- Разрешение EXECUTE необходимо для проверки значений, вставленных или обновленных участником, по коллекции XML-схем, которая типизирует или ограничивает столбцы, переменные и параметры типа xml. Это разрешение требуется также для запросов к XML-данным, хранящимся в этих столбцах и переменных.
Примеры
В следующих примерах показан принцип работы разрешений на XML-схемы. В каждом примере создается соответствующая тестовая база данных, реляционные схемы и имена входа. Этим именам входа предоставляются необходимые разрешения на коллекции XML-схем. После завершения работы в каждом примере выполняются действия по очистке.
А. Предоставление разрешений на создание коллекции XML-схем
В следующем примере показано предоставление разрешений на создание участником коллекции XML-схем. В примере создается образец базы данных и пользователь TestLogin1. Пользователю TestLogin1 предоставляется разрешение ALTER на реляционную схему и разрешение CREATE XML SCHEMA COLLECTION на базу данных. С этими разрешениями пользователь TestLogin1 успешно создает образец коллекции XML-схем.
Б. Предоставление разрешений на использование существующей коллекции XML-схем
Следующий пример далее иллюстрирует модель разрешений для коллекции XML-схем. В нем показаны различные разрешения, необходимые для создания коллекции XML-схем и работы с ней.
В примере создается образец базы данных и имя входа TestLogin1. TestLogin1 создает коллекцию XML-схем в базе данных. Имя входа создает таблицу и с помощью коллекции XML-схем создает типизированный XML-столбец. Затем пользователь вставляет данные и выполняет к ним запрос. Для всех этих действий необходимы соответствующие разрешения схемы, что отражается в программном коде.
В. Предоставление разрешения ALTER на коллекцию XML-схем
Для изменения существующей коллекции XML-схем в базе данных пользователю необходимо разрешение ALTER. В следующем примере показано предоставление разрешения ALTER:
Г. Предоставление разрешения TAKE OWNERSHIP на коллекцию XML-схем
В этом примере показано, как права владельца коллекции XML-схем могут передаваться от одного пользователя другому. Чтобы пример был более интересным, пользователи работают в разных реляционных схемах.
В примере выполняются следующие действия.
- Создается база данных с двумя реляционными схемами, dbo и myOtherDBSchema).
- Создаются два пользователя, TestLogin1 и TestLogin2. TestLogin2 делается владельцем реляционной схемы myOtherDBSchema.
- TestLogin1 создает коллекцию XML-схем в реляционной схеме dbo.
- TestLogin1 предоставляет разрешение TAKE OWNERSHIP на коллекцию XML-схем пользователю TestLogin2.
- TestLogin2 становится владельцем коллекции XML-схем в схеме myOtherDBSchema, не изменяя реляционной схемы коллекции XML-схем.
Д. Предоставление разрешения VIEW DEFINITION на коллекцию XML-схем
В примере показано, каким образом предоставляются разрешения VIEW DEFINITION на коллекцию XML-схем.
SETUSER
go
USE master
go
CREATE LOGIN TestLogin1 WITH password='SQLSvrPwd1'
go
CREATE DATABASE SampleDBForSchemaPermissions
go
USE SampleDBForSchemaPermissions
go
CREATE USER TestLogin1
go
-- User needs ALTER permission on the relational schema in the database
GRANT ALTER ON SCHEMA::dbo TO TestLogin1
go
-- User also needs permission to create xml schema collections in the database
GRANT CREATE XML SCHEMA COLLECTION
TO TestLogin1
go
-- now execute create xml schema collection
SETUSER 'TestLogin1'
go
CREATE XML SCHEMA COLLECTION 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="AdditionalContactInfo" >
<xsd:complexType mixed="true" >
<xsd:sequence>
<xsd:any processContents="strict"
namespace="http://schemas.adventure-works.com/Contact/Record
http://schemas.adventure-works.com/AdditionalContactTypes"
minOccurs="0" maxOccurs="unbounded" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="root" type="xsd:byte"/>
</xsd:schema>'
go
-- final cleanup
SETUSER
go
USE master
go
DROP DATABASE SampleDBForSchemaPermissions
go
DROP LOGIN TestLogin1
go
См. также
Справочник
Управление коллекциями XML-схем на сервере
Правила и ограничения по использованию коллекций XML-схем на сервере
Разрешения на коллекцию XML-схем
Основные понятия
Тип данных xml
Типизированный и нетипизированный XML