Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
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)