Partager via


Révoquer des autorisations sur une collection de schémas XML

L’autorisation de créer une collection de schémas XML peut être révoquée à l’aide de l’une des options suivantes :

  • Révoquez l’autorisation ALTER pour le schéma relationnel. Ensuite, le principal ne peut pas créer une collection de schémas XML dans le schéma relationnel. Toutefois, le principal peut toujours le faire dans d’autres schémas relationnels dans la même base de données.

  • Révoquez l’autorisation ALTER ANY SCHEMA sur la base de données pour le principal. Ensuite, le principal ne peut pas créer une collection de schémas XML n’importe où dans la base de données.

  • Révoquez l’autorisation CREATE XML SCHEMA COLLECTION ou ALTER XML SCHEMA COLLECTION sur la base de données du principal. Cela empêche le principal d’importer une collection de schémas XML dans la base de données. La révocation de l’autorisation ALTER ou CONTROL sur la base de données a le même effet.

Révocation des autorisations sur un objet de collection de schémas XML existant

Voici les autorisations qui peuvent être révoquées sur une collection de schémas XML et les résultats :

  • La révocation de l’autorisation ALTER révoque la capacité d’un principal à modifier le contenu de la collection de schémas XML.

  • La révocation de l’autorisation TAKE OWNERSHIP révoque la capacité d’un principal à transférer la propriété de la collection de schémas XML.

  • La révocation de l’autorisation REFERENCES révoque la capacité d’un principal à utiliser la collection de schémas XML pour taper ou limiter les colonnes de type XML, dans les tables et les vues et les paramètres. Elle révoque également l’autorisation de faire référence à cette collection de schémas à partir d’autres collections de schémas XML.

  • La révocation de l’autorisation VIEW DEFINITION révoque la possibilité d’afficher le contenu d’une collection de schémas XML.

  • La révocation de l’autorisation EXECUTE révoque la possibilité d’insérer ou de mettre à jour des valeurs dans des colonnes, des variables et des paramètres typés ou contraints par la collection XML. Elle révoque également la possibilité d’interroger de telles colonnes, variables ou paramètres de type xml .

Exemples

Les scénarios des exemples suivants illustrent le fonctionnement des autorisations de schéma XML. Chaque exemple crée la base de données de test, les schémas relationnels et les connexions nécessaires. Ces connexions reçoivent les autorisations de collecte de schémas XML nécessaires. Chaque exemple effectue le nettoyage nécessaire à la fin.

Un. Révocation des autorisations pour créer une collection de schémas XML

Cet exemple crée une connexion et un exemple de base de données. Il ajoute également un schéma relationnel dans la base de données. Initialement, la connexion reçoit l’autorisation ALTER sur les schémas relationnels et d’autres autorisations nécessaires pour créer des collections de schémas XML. L’exemple révoque ensuite l’autorisation ALTER sur l’un des schémas relationnels de la base de données. Cela empêche la connexion de créer une collection de schémas 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  

Voir aussi

Données XML (SQL Server)
Comparer du XML typé et du XML non typé
Collections de schémas XML (SQL Server)
Conditions requises et limitations pour les collections de schémas XML sur le serveur