Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Aplica-se a:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Base de dados SQL no Microsoft Fabric
A permissão para criar uma coleção de esquemas XML pode ser revogada usando uma das seguintes opções:
Revogue a permissão ALTER para o esquema relacional. Depois, o principal não pode criar uma coleção de esquemas XML no esquema relacional. No entanto, o utilizador principal ainda pode fazê-lo noutros esquemas relacionais na mesma base de dados.
Revogue a permissão ALTER QUALQUER SCHEMA no banco de dados para o principal. Depois, o principal não pode criar uma coleção de esquemas XML em nenhuma parte da base de dados.
Revogue a permissão CREATE XML SCHEMA COLLECTION ou ALTER XML SCHEMA COLLECTION na base de dados para o principal. Isto impede que o principal importe uma coleção de esquemas XML dentro da base de dados. Revogar a permissão ALTER ou CONTROL na base de dados tem o mesmo efeito.
Revogar permissões sobre um objeto de coleção de esquema XML existente
Seguem-se as permissões que podem ser revogadas numa coleção de esquemas XML e os resultados:
Revogar a permissão ALTER revoga a capacidade do principal de modificar o conteúdo da coleção do esquema XML.
Revogar a permissão TAKE OWNERSHIP revoga a capacidade do principal de transferir a propriedade da coleção de esquemas XML.
Revogar a permissão REFERENCES revoga a capacidade do principal de usar a coleção de esquemas XML para digitar ou restringir colunas do tipo xml, em tabelas, visões e parâmetros. Também revoga a permissão para consultar esta coleção de esquemas de outras coleções de esquemas XML.
Revogar a permissão VIEW DEFINITION revoga a capacidade do principal de visualizar o conteúdo de uma coleção de esquema XML.
Revogar a permissão EXECUTE revoga a capacidade do principal de inserir ou atualizar valores em colunas, variáveis e parâmetros que são tipados ou restritos pela coleção XML. Também revoga a capacidade de consultar tais colunas, variáveis ou parâmetros do tipo xml .
Examples
Os cenários nos exemplos seguintes ilustram como funcionam as permissões do esquema XML. Cada exemplo cria a base de dados de teste necessária, esquemas relacionais e logins. Estes logins recebem as permissões necessárias para recolha de esquemas XML. Cada exemplo realiza a limpeza necessária no final.
A. Revogar permissões para criar uma coleção de esquemas XML
Este exemplo cria um login e uma base de dados de exemplo. Também adiciona um esquema relacional na base de dados. Inicialmente, o login recebe permissão ALTER tanto em esquemas relacionais como noutras permissões necessárias para criar coleções de esquemas XML. O exemplo revoga então a permissão ALTER num dos esquemas relacionais na base de dados. Isto impede que o login 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="https://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="https://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="https://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="https://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