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
Verwaltete Azure SQL-Instanz
SQL-Datenbank in Microsoft Fabric
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 weiterhin in anderen relationalen Schemas derselben Datenbank tun.
Widerrufen Sie dem Prinzipal die Berechtigung ALTER ANY SCHEMA für die Datenbank. Der Prinzipal kann in diesem Fall keine XML-Schemaauflistung in der gesamten Datenbank erstellen.
Widerrufen Sie die Berechtigung CREATE XML SCHEMA COLLECTION oder ALTER XML SCHEMA COLLECTION für die Datenbank für den Sicherheitsprinzipal. 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 Entziehen der TAKE OWNERSHIP-Berechtigung wird einem Prinzipal die Möglichkeit entzogen, die Besitzrechte an der XML-Schemasammlung zu übertragen.
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 Widerrufen der VIEW DEFINITION-Berechtigung wird die Möglichkeit eines Prinzipals zum Anzeigen des Inhalts einer XML-Schemaauflistung widerrufen.
Durch das Entziehen der EXECUTE-Berechtigung wird einem Principal die Berechtigung entzogen, Werte in Spalten, Variablen und Parametern einzufügen oder zu aktualisieren, die durch die XML-Sammlung typisiert sind oder von ihr 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 Anmeldungen werden die erforderlichen Berechtigungen für XML-Schemasammlungen erteilt. Jedes der Beispiele nimmt am Ende die erforderlichen Bereinigungen vor.
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. Zunächst werden der Anmeldung die ALTER-Berechtigung für relationale Schemas sowie weitere 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 die Anmeldung eine XML-Schemasammlung erstellt.
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