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.
Gilt für: SQL Server
Azure SQL-Datenbank
Azure 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. Der Prinzipal kann in diesem Fall 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. Der Prinzipal kann in diesem Fall keine XML-Schemaauflistung in der gesamten 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.
Aufheben der Berechtigungen für ein vorhandenes XML-Schemaauflistungsobjekt
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. Aufheben der 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