Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Разрешение на создание коллекции схем 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 на сервере