Поделиться через


Предоставление разрешений на коллекции 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

Справка и поддержка

Получение помощи по SQL Server 2005