Compartilhar via


Revogar permissões em uma coleção de esquemas XML

A permissão para criar uma coleção de esquemas XML pode ser revogada usando um dos seguintes:

  • Revogue a permissão ALTER para o esquema relacional. Então, o principal não pode criar uma coleção de esquemas XML no esquema relacional. No entanto, o principal ainda pode fazer isso em outros esquemas no mesmo banco de dados.

  • Revogue a permissão ALTER ANY SCHEMA no banco de dados para o principal. Em seguida, a entidade de segurança não pode criar uma coleção de esquemas XML em qualquer lugar no banco de dados.

  • Revogue a permissão CREATE XML SCHEMA COLLECTION ou ALTER XML SCHEMA COLLECTION no banco de dados para o principal. Isso impede que o principal importe uma coleção de esquemas XML no banco de dados. A revogação da permissão ALTER ou CONTROL no banco de dados tem o mesmo efeito.

Revogando permissões em um objeto de coleção de esquema XML existente

A seguir estão as permissões que podem ser revogadas em uma coleção de esquemas XML e os resultados:

  • Revogar a permissão ALTER revoga a capacidade de uma entidade principal de modificar o conteúdo da coleção de esquemas XML.

  • Revogar a permissão TAKE OWNERSHIP revoga a capacidade de um principal de transferir a propriedade da coleção de esquemas XML.

  • Revogar a permissão REFERENCES revoga a capacidade de um principal de usar a coleção de esquemas XML para digitar ou restringir colunas de tipo xml, em tabelas, parâmetros e exibições. Ele também revoga a permissão para referenciar essa coleção de esquemas a partir de outras coleções de esquemas XML.

  • Revogar a permissão VIEW DEFINITION revoga a capacidade de um principal de exibir o conteúdo de uma coleção de esquemas XML.

  • Revogar a permissão EXECUTE retira a habilidade de um principal para inserir ou atualizar valores em colunas, variáveis e parâmetros que são tipados ou limitados pela coleção XML. Ele também revoga a capacidade de consultar tais colunas de tipo xml , variáveis ou parâmetros.

Exemplos

Os cenários nos exemplos a seguir ilustram como funcionam as permissões de esquema XML. Cada exemplo cria o banco de dados de teste, os esquemas relacionais e os logons necessários. Esses logons recebem as permissões de coleta de esquema XML necessárias. Cada exemplo realiza a limpeza necessária ao final.

Um. Revogando permissões para criar uma coleção de esquemas XML

Este exemplo cria um logon e um banco de dados de exemplo. Ele também adiciona um esquema relacional no banco de dados. Inicialmente, o logon recebe a permissão ALTER em ambos os esquemas relacionais e outras permissões necessárias para criar coleções de esquema XML. Em seguida, o exemplo revoga a permissão ALTER em um dos esquemas relacionais no banco de dados. Isso impede que o logon crie uma coleção de esquemas 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  

Consulte Também

Dados XML (SQL Server)
Comparar XML tipado com XML não tipado
Coleções de esquema XML (SQL Server)
Requisitos e limitações para coleções de esquema XML no servidor