Condividi tramite


Revocare le autorizzazioni per una raccolta di XML Schema

L'autorizzazione per creare una raccolta di XML Schema può essere revocata usando una delle opzioni seguenti:

  • Revocare l'autorizzazione ALTER per lo schema relazionale. L'entità non può quindi creare una raccolta di XML Schema nello schema relazionale. Tuttavia, l'entità può comunque farlo in altri schemi relazionali nello stesso database.

  • Revocare l'autorizzazione ALTER ANY SCHEMA per il database per l'entità. L'entità non può quindi creare una raccolta di XML Schema in qualsiasi punto del database.

  • Revocare l'autorizzazione CREATE XML SCHEMA COLLECTION o ALTER XML SCHEMA COLLECTION per il database per l'entità. Ciò impedisce all'entità di importare una raccolta di XML Schema all'interno del database. La revoca dell'autorizzazione ALTER o CONTROL per il database ha lo stesso effetto.

Revoca delle autorizzazioni per un oggetto raccolta di XML Schema esistente

Di seguito sono riportate le autorizzazioni che possono essere revocate per una raccolta di XML Schema e i risultati:

  • La revoca dell'autorizzazione ALTER revoca la capacità di un'entità di modificare il contenuto della raccolta di XML Schema.

  • La revoca del permesso TAKE OWNERSHIP revoca l'abilità di un’entità di trasferire la proprietà della raccolta di schemi XML.

  • La revoca dell'autorizzazione REFERENCES revoca la capacità di un principale di usare la raccolta di XML Schema per definire o vincolare colonne di tipo xml, in tabelle, viste e parametri. Revoca inoltre l'autorizzazione per fare riferimento a questa raccolta di schemi da altre raccolte di XML Schema.

  • La revoca dell'autorizzazione VIEW DEFINITION impedisce al principale di visualizzare il contenuto di una raccolta di XML Schema.

  • La revoca dell'autorizzazione EXECUTE revoca la capacità di un'entità di inserire o aggiornare valori in colonne, variabili e parametri tipizzati o vincolati dalla raccolta XML. Revoca inoltre la possibilità di eseguire query su colonne, variabili o parametri di tipo xml .

Esempi

Gli scenari degli esempi seguenti illustrano il funzionamento delle autorizzazioni per XML Schema. In ogni esempio vengono creati il database di prova, gli schemi relazionali e gli account di accesso necessari. A tali account di accesso vengono concesse le autorizzazioni necessarie per la raccolta di XML Schema. Alla fine di ogni esempio viene eseguito il processo di pulizia necessario.

Un. Revoca delle autorizzazioni per creare una raccolta di XML Schema

Questo esempio crea un account di accesso e un database di esempio. Aggiunge anche uno schema relazionale nel database. Inizialmente, all'account di accesso viene concessa l'autorizzazione ALTER sia sugli schemi relazionali sia su altre autorizzazioni necessarie per creare raccolte di XML Schema. Nell'esempio viene quindi revocata l'autorizzazione ALTER per uno degli schemi relazionali nel database. Ciò impedisce all'accesso di creare una raccolta di XML schema.

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  

Vedere anche

Dati XML (SQL Server)
Confrontare dati XML tipizzati con dati XML non tipizzati
Raccolte di XML Schema (SQL Server)
Requisiti e limitazioni per le raccolte di XML Schema nel server