Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Si applica a:SQL Server
Database SQL di Azure
Istanza gestita di Azure SQL
Database SQL in Microsoft Fabric
Per revocare l'autorizzazione per creare una raccolta XML Schema, è possibile eseguire una delle operazioni seguenti:
Revocare l'autorizzazione ALTER per lo schema relazionale. Quindi, il principale non può creare una raccolta di schemi XML nello schema relazionale. ma potrà comunque eseguire questa operazione negli altri schemi relazionali dello stesso database.
Revocare l'autorizzazione ALTER ANY SCHEMA per il database per l'entità. L'entità non sarà quindi in grado di creare una raccolta di schemi XML all'interno 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 XML Schema nel database. La revoca dell'autorizzazione ALTER o CONTROL per il database produce gli stessi effetti.
Revoca delle autorizzazioni per un oggetto raccolta di schemi XML esistente
Di seguito sono riportate le autorizzazioni che è possibile revocare per una raccolta XML Schema e i relativi risultati:
La revoca dell'autorizzazione ALTER impedisce al soggetto di modificare il contenuto della raccolta di schemi XML.
La revoca dell'autorizzazione TAKE OWNERSHIP impedisce all'entità di trasferire la proprietà della raccolta XML Schema.
La revoca dell'autorizzazione REFERENCES impedisce all'entità di utilizzare la raccolta XML Schema per tipizzare o vincolare le colonne di tipo xml di tabelle e viste nonché i parametri. Comporta inoltre la revoca dell'autorizzazione che consente di fare riferimento alla raccolta di schemi da altre raccolte XML Schema.
La revoca dell'autorizzazione DEFINITION revoca la VIEW capacità di un'entità di visualizzare il contenuto di una raccolta di XML Schema.
La revoca dell'autorizzazione EXECUTE impedisce all'entità di inserire o aggiornare valori nelle colonne, variabili e parametri tipizzati o vincolati dalla raccolta XML. Comporta inoltre la revoca della possibilità di eseguire query su tali 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.
A. Revocare le autorizzazioni per creare una raccolta di schemi XML
In questo esempio vengono creati un account di accesso e un database di esempio e nel database viene inoltre aggiunto uno schema relazionale. Inizialmente, all'accesso viene concessa l'autorizzazione ALTER per entrambi gli schemi relazionali e le altre autorizzazioni necessarie per creare raccolte di schemi XML. Viene quindi revocata l'autorizzazione ALTER per uno degli schemi relazionali del database, Questo impedisce al login di creare una raccolta di schemi 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