Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
A permissão pode ser negada para criar uma nova coleção de esquemas XML ou usar uma existente.
Negando permissão para criar uma coleção de esquemas XML
Você pode negar permissão para criar uma coleção de esquemas XML das seguintes maneiras:
Negar a permissão ALTER no esquema relacional.
Negar CONTROL no esquema relacional para negar todas as permissões no esquema relacional e em todos os objetos contidos.
Negar o comando ALTER ANY SCHEMA no banco de dados. Nesse caso, o principal não pode criar uma coleção de esquemas XML em qualquer lugar no banco de dados. Observe também que negar a permissão ALTER ou CONTROL no banco de dados nega todas as permissões em todos os objetos no banco de dados.
Negando permissões em um objeto de coleção de esquema XML
A seguir estão as permissões que podem ser negadas em uma coleção de esquemas XML existente e seus resultados:
Negar a permissão ALTER nega à entidade principal a capacidade de modificar o conteúdo da coleção de esquemas XML.
Negar a permissão CONTROL nega à entidade a capacidade de realizar qualquer operação na coleção de esquemas XML.
Negar a permissão REFERENCES nega ao principal a capacidade de definir ou restringir colunas e parâmetros do tipo XML usando a coleção de esquemas XML. Ele também nega ao principal a capacidade de se referir a essa coleção de esquemas XML a partir de outras coleções de esquemas XML.
Negar a permissão VIEW DEFINITION nega à entidade de segurança a capacidade de exibir o conteúdo de uma coleção de esquemas XML.
Negar a permissão EXECUTE impede a entidade de inserir ou atualizar os valores em colunas, variáveis e parâmetros que são tipados ou restringidos pela coleção de esquemas XML. Ele também nega ao principal a capacidade de consultar os valores naquelas mesmas colunas e variáveis do tipo xml.
Exemplos
Os cenários nos exemplos a seguir mostram 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. Impedindo que um usuário crie uma coleção de esquemas XML
Uma das maneiras de impedir que um usuário crie uma coleção de esquemas XML é negando a permissão ALTER em um esquema relacional. Isso é mostrado no exemplo a seguir.
O exemplo cria um usuário TestLogin1e um banco de dados. Ele também cria um esquema relacional, além do dbo esquema, no banco de dados. Inicialmente, a CREATE XML SCHEMA permissão permite que o usuário crie uma coleção de esquemas em qualquer lugar do banco de dados. Em seguida, o exemplo nega ALTER permissão ao usuário em um dos esquemas relacionais. Isso impede que o usuário crie uma coleção de esquemas XML nesse esquema relacional.
CREATE LOGIN TestLogin1 WITH password='SQLSvrPwd1'
GO
CREATE DATABASE SampleDBForSchemaPermissions
GO
USE SampleDBForSchemaPermissions
GO
-- Create another relational schema in the database.
CREATE SCHEMA myOtherDBSchema
GO
CREATE USER TestLogin1
GO
-- For TestLogin1 to create/import XML schema collection, following
-- permission needed.
-- Database-level permissions
GRANT CREATE XML SCHEMA COLLECTION TO TestLogin1
GO
GRANT ALTER ANY SCHEMA TO TestLogin1
GO
-- Now TestLogin1 can import an XML schema collection.
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
DROP XML SCHEMA COLLECTION myOtherDBSchema.myTestSchemaCollection
GO
-- Now deny permission from TestLogin1 to alter myOtherDBSchema.
setuser
GO
DENY ALTER ON SCHEMA::myOtherDBSchema TO TestLogin1
GO
-- Now TestLogin1 cannot create xml schema collection.
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
-- Final cleanup
SETUSER
GO
USE master
GO
DROP DATABASE SampleDBForSchemaPermissions
GO
DROP LOGIN TestLogin1
GO
B. Negando permissões em uma coleção de esquema XML
O exemplo a seguir mostra como uma permissão específica em uma coleção de esquemas XML existente pode ser negada a um logon. Neste exemplo, um logon de teste tem a permissão REFERENCES negada em uma coleção de esquemaS XML existente.
O exemplo cria um usuário TestLogin1e um banco de dados. Ele também cria um esquema relacional, além do dbo esquema, no banco de dados. Inicialmente, a CREATE XML SCHEMA permissão permite que o usuário crie uma coleção de esquemas em qualquer lugar do banco de dados.
A permissão REFERENCES na coleção de esquemas XML permite que TestLogin1 use o esquema para criar uma coluna tipada xml em uma tabela. Se a REFERENCES permissão na coleção de esquemas XML for negada, ela impedirá o TestLogin1 uso da coleção de esquemas XML.
CREATE LOGIN TestLogin1 WITH password='SQLSvrPwd1'
GO
CREATE DATABASE SampleDBForSchemaPermissions
GO
USE SampleDBForSchemaPermissions
GO
-- Create another relational schema in the database.
CREATE SCHEMA myOtherDBSchema
GO
CREATE USER TestLogin1
GO
-- For TestLogin1 to create/import XML schema collection, the following
-- permission is required.
-- Database-level permissions
GRANT CREATE XML SCHEMA COLLECTION TO TestLogin1
GO
GRANT ALTER ANY SCHEMA TO TestLogin1
GO
-- Now TestLogin1 can import an XML schema collection.
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
-- Grant permission to TestLogin1 to create a table and reference the XML schema collection.
SETUSER
GO
GRANT CREATE TABLE TO TestLogin1
GO
-- The user also needs REFERENCES permission to use the XML schema collection
-- to create a typed XML column (REFERENCES permission on the schema
-- collection is not needed).
GRANT REFERENCES ON XML SCHEMA COLLECTION::myOtherDBSchema.myTestSchemaCollection
TO TestLogin1
GO
--TestLogin1 can use the schema.
CREATE TABLE T(i int, x xml (myOtherDBSchema.myTestSchemaCollection))
GO
-- Drop the table.
DROP TABLE T
GO
-- Now deny REFERENCES permission to TestLogin1 on the schema created previously.
SETUSER
GO
DENY REFERENCES ON XML SCHEMA COLLECTION::myOtherDBSchema.myTestSchemaCollection TO TestLogin1
GO
-- Now TestLogin1 cannot create xml schema collection
SETUSER 'TestLogin1'
GO
-- Following statement fails. TestLogin1 does not have REFERENCES
-- permission on the XML schema collection.
CREATE TABLE T(i int, x xml (myOtherDBSchema.myTestSchemaCollection))
GO
-- Final cleanup
SETUSER
GO
USE master
GO
DROP DATABASE SampleDBForSchemaPermissions
GO
DROP LOGIN TestLogin1
GO
Consulte Também
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
Permissões de objeto DENY (Transact-SQL)
Permissões de objeto GRANT (Transact-SQL)
Dados XML (SQL Server)