Freigeben über


Berechtigungen für eine XML-Schemaauflistung verweigern

Die Berechtigung kann verweigert werden, entweder eine neue XML-Schemaauflistung zu erstellen oder eine vorhandene zu verwenden.

Verweigern der Berechtigung zum Erstellen einer XML-Schemaauflistung

Sie können die Berechtigung zum Erstellen einer XML-Schemaauflistung auf folgende Weise verweigern:

  • Die ALTER-Berechtigung für das relationale Schema verweigern.

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

  • Verweigern Sie ALTER für jedes beliebige Schema in der Datenbank. In diesem Fall kann der Prinzipal keine XML-Schemaauflistung an einer beliebigen Stelle in der Datenbank erstellen. Beachten Sie auch, 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-Schemasammlungsobjekt

Im Folgenden sind die Berechtigungen aufgeführt, die für eine vorhandene XML-Schemaauflistung und die Ergebnisse verweigert werden können:

  • Das Verweigern der ALTER-Berechtigung verweigert dem Prinzipal die Möglichkeit, den Inhalt der XML-Schemaauflistung zu ändern.

  • Durch Verweigerung der CONTROL-Berechtigung wird dem Prinzipal die Fähigkeit verweigert, Vorgänge in der XML-Schema-Sammlung auszuführen.

  • Das Verweigern der REFERENCES-Berechtigung verweigert dem Hauptbenutzer die Möglichkeit, XML-Typ-Spalten und -Parameter mithilfe der XML-Schemasammlung einzugeben oder einzuschränken. Außerdem verweigert sie dem Prinzipal die Möglichkeit, auf diese XML-Schemaauflistung aus anderen XML-Schemasammlungen zu verweisen.

  • Das Verweigern der VIEW DEFINITION-Berechtigung verweigert dem Hauptnutzer die Möglichkeit, den Inhalt einer XML-Schemaauflistung anzuzeigen.

  • Das Verweigern der EXECUTE-Berechtigung nimmt dem Benutzer die Möglichkeit, Werte in Spalten, Variablen und Parametern einzufügen oder zu aktualisieren, die durch die XML-Schemaauflistung typisiert oder eingeschränkt werden. Außerdem verweigert sie dem Prinzipal die Möglichkeit, die Werte in denselben XML-Typspalten und -variablen abzufragen.

Beispiele

Die Szenarien in den folgenden Beispielen zeigen, wie XML-Schemaberechtigungen funktionieren. Jedes Beispiel erstellt die erforderliche Testdatenbank, relationale Schemas und Anmeldungen. Diese Anmeldungen erhalten die erforderlichen Berechtigungen für die XML-Schemasammlung. Jedes Beispiel führt die erforderliche Bereinigung am Ende durch.

A. Verhindern, dass ein Benutzer eine XML-Schemaauflistung erstellt

Eine der Möglichkeiten, um zu verhindern, dass ein Benutzer eine XML-Schemaauflistung erstellt, besteht darin, die ALTER-Berechtigung für ein relationales Schema zu verweigern. Dies wird im folgenden Beispiel gezeigt.

Im Beispiel werden ein Benutzer und TestLogin1eine Datenbank erstellt. Außerdem wird ein relationales Schema zusätzlich zum dbo Schema in der Datenbank erstellt. Zunächst ermöglicht die CREATE XML SCHEMA Berechtigung dem Benutzer, eine Schemasammlung an einer beliebigen Stelle in der Datenbank zu erstellen. Im Beispiel wird dem Benutzer dann die Berechtigung auf eines der relationalen Schemata verweigert. Dadurch wird verhindert, dass der Benutzer eine XML-Schemaauflistung in diesem relationalen Schema erstellt.

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 eine bestimmte Berechtigung für eine vorhandene XML-Schemasammlung einer Anmeldung verweigert werden kann. In diesem Beispiel wird einem Test-Login die REFERENCES-Berechtigung für eine vorhandene XML-Schemasammlung verweigert.

Im Beispiel wird ein Benutzer und TestLogin1eine Datenbank erstellt. Außerdem wird ein relationales Schema zusätzlich zum dbo Schema in der Datenbank erstellt. Zunächst ermöglicht die CREATE XML SCHEMA Berechtigung dem Benutzer, eine Schemasammlung an einer beliebigen Stelle in der Datenbank zu erstellen.

Die REFERENCES-Berechtigung für die XML-Schema-Sammlung ermöglicht TestLogin1, das Schema zu verwenden, um eine typisierte xml-Spalte in einer Tabelle zu erstellen. Wenn die Berechtigung für die REFERENCES XML-Schemasammlung verweigert wird, wird verhindert, dass die TestLogin1 XML-Schemasammlung genutzt werden 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, 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

Vergleichen von typisiertem XML mit nicht typisiertem XML
XML-Schemaauflistungen (SQL Server)
Anforderungen und Einschränkungen für XML-Schemasammlungen auf dem Server
DENY (Objektberechtigungen) (Transact-SQL)
GRANT (Objektberechtigungen) (Transact-SQL)
XML-Daten (SQL Server)