Freigeben über


Verweigern von Berechtigungen für eine XML-Schemaauflistung

Die Berechtigung zum Erstellen einer neuen XML-Schemaauflistung bzw. zum Verwenden einer vorhandenen Schemaauflistung kann verweigert werden.

Verweigern der Berechtigung zum Erstellen einer XML-Schemaauflistung

Es gibt folgende Möglichkeiten, um die Berechtigung zum Erstellen einer XML-Schemaauflistung zu verweigern:

  • Verweigern der ALTER-Berechtigung für das relationale Schema.

  • Verweigern der CONTROL-Berechtigung für das relationale Schema, um alle Berechtigungen für das relationale Schema und alle darin enthaltenen Objekte zu verweigern.

  • Verweigern der ALTER ANY SCHEMA-Berechtigung für die Datenbank. In diesem Fall kann der Prinzipal keine XML-Schemaauflistung in der gesamten Datenbank erstellen. Beachten Sie, dass das Verweigern der ALTER- oder CONTROL-Berechtigung für die Datenbank alle Berechtigungen für alle Objekte in der Datenbank verweigert.

Verweigern von Berechtigungen für ein XML-Schemaauflistungsobjekt

Die folgenden Berechtigungen können mit den aufgeführten Ergebnissen für eine vorhandene XML-Schemaauflistung verweigert werden:

  • Durch das Verweigern der ALTER-Berechtigung wird einem Prinzipal die Fähigkeit zum Ändern des Inhalts der XML-Schemaauflistung abgesprochen.

  • Durch das Verweigern der CONTROL-Berechtigung wird einem Prinzipal die Fähigkeit zum Ausführen beliebiger Vorgänge mit der XML-Schemaauflistung abgesprochen.

  • Durch das Verweigern der REFERENCES-Berechtigung wird einem Prinzipal die Fähigkeit zum Typisieren oder Einschränken von Spalten und Parametern vom Typ xml mithilfe der XML-Schemaauflistung abgesprochen. Außerdem wird dem Prinzipal die Möglichkeit zum Verweisen auf diese XML-Schemaauflistung aus anderen XML-Schemaauflistungen verweigert.

  • Durch das Verweigern der VIEW DEFINITION-Berechtigung wird einem Prinzipal die Fähigkeit zum Anzeigen des Inhalts einer XML-Schemaauflistung abgesprochen.

  • Durch das Verweigern der EXECUTE-Berechtigung wird dem Prinzipal die Fähigkeit zum Einfügen oder Aktualisieren von Werten in Spalten, Variablen und Parametern abgesprochen, die durch die XML-Auflistung typisiert oder eingeschränkt werden. Außerdem wird dem Prinzipal die Möglichkeit zum Abfragen der Werte in diesen Spalten und Variablen vom Typ xml abgesprochen.

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.Verhindern, dass ein Benutzer eine XML-Schemaauflistung erstellen kann

Wenn Sie verhindern möchten, dass ein Benutzer eine XML-Schemaauflistung erstellen kann, können Sie z. B. die ALTER-Berechtigung für ein relationales Schema verweigern. Dies wird im folgenden Beispiel gezeigt.

Dieses Beispiel erstellt einen Benutzer, TestLogin1, und eine Datenbank. Außerdem wird neben dem dbo-Schema ein relationales Schema in der Datenbank erstellt. Anfangs ermöglicht die CREATE XML SCHEMA-Berechtigung dem Benutzer das Erstellen einer Schemaauflistung in der gesamten Datenbank. Das Beispiel verweigert dann die ALTER-Berechtigung für den Benutzer für eines der relationalen Schemas. Dies verhindert, dass der Benutzer eine XML-Schemaauflistung in diesem relationalen Schema erstellen kann.

CREATE LOGIN TestLogin1 WITH password='SQLSvrPwd1'
GO
CREATE DATABASE SampleDBForSchemaPermissions
GO
USE SampleDBForSchemaPermissions
GO
-- Create another relational schema in the database.
CREATE SCHEMA myOtherDBSchema
GO
CREATE USER TestLogin1
GO
-- For TestLogin1 to create/import XML schema collection, following
-- permission needed.
-- Database-level permissions
GRANT CREATE XML SCHEMA COLLECTION TO TestLogin1
GO
GRANT ALTER ANY SCHEMA TO TestLogin1
GO
-- Now TestLogin1 can import an XML schema collection.
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
DROP XML SCHEMA COLLECTION myOtherDBSchema.myTestSchemaCollection
GO
-- Now deny permission from TestLogin1 to alter myOtherDBSchema.
setuser
GO
DENY ALTER ON SCHEMA::myOtherDBSchema TO TestLogin1
GO
-- Now TestLogin1 cannot create xml schema collection.
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
-- Final cleanup
SETUSER
GO
USE master
GO
DROP DATABASE SampleDBForSchemaPermissions
GO
DROP LOGIN TestLogin1
GO

B.Verweigern von Berechtigungen für eine XML-Schemaauflistung

Das folgende Beispiel zeigt, wie einem Anmeldenamen eine bestimmte Berechtigung für eine vorhandene XML-Schemaauflistung verweigert werden kann. In diesem Beispiel wird einem Testanmeldenamen die REFERENCES-Berechtigung für eine vorhandene XML-Schemaauflistung verweigert.

Dieses Beispiel erstellt einen Benutzer, TestLogin1, und eine Datenbank. Außerdem wird neben dem dbo-Schema ein relationales Schema in der Datenbank erstellt. Anfangs ermöglicht die CREATE XML SCHEMA-Berechtigung dem Benutzer das Erstellen einer Schemaauflistung in der gesamten Datenbank.

Durch die REFERENCES-Berechtigung für die XML-Schemaauflistung kann TestLogin1 das Schema beim Erstellen einer typisierten xml-Spalte in einer Tabelle verwenden. Wenn die REFERENCES-Berechtigung für die XML-Schemaauflistung verweigert wird, kann TestLogin1 die XML-Schemaauflistung nicht verwenden.

CREATE LOGIN TestLogin1 WITH password='SQLSvrPwd1'
GO
CREATE DATABASE SampleDBForSchemaPermissions
GO
USE SampleDBForSchemaPermissions
GO
-- Create another relational schema in the database.
CREATE SCHEMA myOtherDBSchema
GO
CREATE USER TestLogin1
GO
-- For TestLogin1 to create/import XML schema collection, the following
-- permission is required.
-- Database-level permissions
GRANT CREATE XML SCHEMA COLLECTION TO TestLogin1
GO
GRANT ALTER ANY SCHEMA TO TestLogin1
GO
-- Now TestLogin1 can import an XML schema collection.
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
-- Grant permission to TestLogin1 to create a table and reference the XML schema collection.
SETUSER
GO
GRANT CREATE TABLE TO TestLogin1
GO
-- The user also needs REFERENCES permission to use the XML schema collection
-- to create a typed XML column (REFERENCES permission on the schema 
-- collection is not needed).
GRANT REFERENCES ON XML SCHEMA COLLECTION::myOtherDBSchema.myTestSchemaCollection 
TO TestLogin1
GO

--TestLogin1 can use the schema.
CREATE TABLE T(i int, x xml (myOtherDBSchema.myTestSchemaCollection))
GO
-- Drop the table.
DROP TABLE T
GO
-- Now deny REFERENCES permission to TestLogin1 on the schema created previously.
SETUSER
GO
DENY REFERENCES ON XML SCHEMA COLLECTION::myOtherDBSchema.myTestSchemaCollection TO TestLogin1

GO
-- Now TestLogin1 cannot create xml schema collection
SETUSER 'TestLogin1'
GO
-- Following statement fails. TestLogin1 does not have REFERENCES 
-- permission on the XML schema collection.
CREATE TABLE T(i int, x xml (myOtherDBSchema.myTestSchemaCollection))
GO

-- Final cleanup
SETUSER
GO
USE master
GO
DROP DATABASE SampleDBForSchemaPermissions
GO
DROP LOGIN TestLogin1
GO

Siehe auch

Verweis

XML-Schemaauflistungen (SQL Server)

Anforderungen und Einschränkungen für XML-Schemaauflistungen auf dem Server

DENY (Objektberechtigungen) (Transact-SQL)

GRANT (Objektberechtigungen) (Transact-SQL)

Konzepte

Vergleichen von typisiertem XML mit nicht typisiertem XML

XML-Daten (SQL Server)