Widerrufen von Berechtigungen für eine XML-Schemaauflistung

Gilt für:SQL ServerAzure SQL-DatenbankAzure SQL Managed Instance

Die Berechtigung zum Erstellen einer XML-Schemaauflistung kann mithilfe eines der folgenden Verfahren aufgehoben werden:

  • Aufheben der ALTER-Berechtigung für das relationale Schema. Anschließend kann der Prinzipal keine XML-Schemaauflistung im relationalen Schema erstellen. Der Prinzipal kann dies jedoch auch weiterhin in anderen relationalen Schemas in der gleichen Datenbank.

  • Aufheben der ALTER ANY SCHEMA-Berechtigung für die Datenbank für den Prinzipal. Anschließend kann der Prinzipal keine XML-Schemaauflistung an einer beliebigen Stelle in der Datenbank erstellen.

  • Aufheben der CREATE XML SCHEMA COLLECTION- oder ALTER XML SCHEMA COLLECTION-Berechtigung für die Datenbank für den Prinzipal. Dies verhindert, dass der Prinzipal eine XML-Schemaauflistung innerhalb der Datenbank importieren kann. Das Aufheben der ALTER- oder CONTROL-Berechtigung für die Datenbank besitzt die gleichen Auswirkungen.

Widerrufen von Berechtigungen für ein vorhandenes XML-Schemasammlungsobjekt

Im Folgenden finden Sie die Berechtigungen, die für eine XML-Schemaauflistung aufgehoben werden können, sowie die Ergebnisse:

  • Durch das Aufheben der ALTER-Berechtigung wird die Fähigkeit eines Prinzipals zum Ändern des Inhalts der XML-Schemaauflistung aufgehoben.

  • Durch das Aufheben der TAKE OWNERSHIP-Berechtigung wird die Fähigkeit eines Prinzipals zum Übertragen des Besitzes der XML-Schemaauflistung aufgehoben.

  • Durch das Aufheben der REFERENCES-Berechtigung wird die Fähigkeit eines Prinzipals zum Verwenden der XML-Schemaauflistung zum Typisieren oder Einschränken von Spalten des xml-Typs in Tabellen und Sichten sowie Parametern aufgehoben. Außerdem wird die Berechtigung zum Verweisen auf diese Schemaauflistung aus anderen XML-Schemaauflistungen aufgehoben.

  • Durch das Aufheben der VIEW DEFINITION-Berechtigung wird die Fähigkeit eines Prinzipals zum Anzeigen des Inhalts einer XML-Schemaauflistung aufgehoben.

  • Durch das Aufheben der EXECUTE-Berechtigung wird die Fähigkeit eines Prinzipals zum Einfügen oder Aktualisieren von Werten in Spalten, Variablen und Parametern aufgehoben, die durch die XML-Auflistung typisiert oder eingeschränkt werden. Außerdem wird die Fähigkeit zum Abfragen solcher Spalten, Variablen oder Parameter vom Typ xml aufgehoben.

Beispiele

Die Szenarien in den folgenden Beispielen veranschaulichen, wie XML-Schemaberechtigungen funktionieren. Jedes dieser Beispiele erstellt die erforderliche Testdatenbank, die relationalen Schemas und Anmeldungen. Diesen Anmeldenamen werden die erforderlichen Berechtigungen für XML-Schemaauflistungen erteilt. Jedes der Beispiele führt am Ende den erforderlichen Cleanup aus.

A. Widerrufen von Berechtigungen zum Erstellen einer XML-Schemaauflistung

Dieses Beispiel erstellt eine Anmeldung und eine Beispieldatenbank. Darüber hinaus wird in der Datenbank ein relationales Schema hinzugefügt. Anfangs werden dem Anmeldenamen die ALTER-Berechtigung für relationale Schemas und andere erforderliche Berechtigungen zum Erstellen von XML-Schemaauflistungen erteilt. Das Beispiel hebt dann die ALTER-Berechtigung für eines der relationalen Schemas in der Datenbank auf. Dies verhindert, dass der Anmeldename eine XML-Schemaauflistung erstellen kann.

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

Siehe auch