Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
van toepassing op:SQL Server
Azure SQL Database
Azure SQL Managed Instance
SQL-database in Microsoft Fabric
De machtiging voor het maken van een XML-schemaverzameling kan op een van de volgende manieren worden ingetrokken:
De ALTER-machtiging voor het relationele schema intrekken. Vervolgens kan de principal geen XML-schemaverzameling maken in het relationele schema. De principal kan dit echter nog steeds doen in andere relationele schema's in dezelfde database.
Trek de machtiging ALTER ANY SCHEMA voor de principal op de database in. Vervolgens kan de principal nergens in de database een XML-schemaverzameling maken.
De machtiging voor CREATE XML SCHEMA COLLECTION of ALTER XML SCHEMA COLLECTION op de database intrekken voor de principal. Hiermee voorkomt u dat de principal een XML-schemaverzameling in de database importeert. Het intrekken van de machtiging ALTER of CONTROL voor de database heeft hetzelfde effect.
Machtigingen intrekken voor een bestaand XML-schemaverzamelingsobject
Hier volgen de machtigingen die kunnen worden ingetrokken voor een XML-schemaverzameling en de resultaten:
Door de machtiging ALTER in te trekken, wordt de mogelijkheid van een principal ingetrokken om de inhoud van de XML-schemaverzameling te wijzigen.
Als u de machtiging TAKE OWNERSHIP intrekt, wordt de mogelijkheid van een principal om het eigendom van de XML-schemaverzameling over te dragen ingetrokken.
Door de machtiging REFERENCES in te trekken, wordt de mogelijkheid van een principal om de XML-schemaverzameling te gebruiken voor het typen of beperken van xml-typekolommen, in tabellen en weergaven en parameters ingetrokken. Ook wordt de machtiging voor het verwijzen naar deze schemaverzameling uit andere XML-schemaverzamelingen ingetrokken.
Door de machtiging VIEW DEFINITION in te trekken, wordt de mogelijkheid van een principal om de inhoud van een XML-schemaverzameling weer te geven ingetrokken.
Als u de EXECUTE-machtiging intrekt, wordt de mogelijkheid van een principal ingetrokken om waarden in kolommen, variabelen en parameters in te voegen of bij te werken die zijn getypt of beperkt door de XML-verzameling. Ook wordt de mogelijkheid om query's uit te voeren op dergelijke xml-typekolommen , variabelen of parameters ingetrokken.
Voorbeelden
In de scenario's in de volgende voorbeelden ziet u hoe machtigingen voor XML-schema's werken. In elk voorbeeld worden de benodigde testdatabase, relationele schema's en aanmeldingen gemaakt. Aan deze aanmeldingen worden de benodigde machtigingen voor het verzamelen van XML-schema's verleend. Elk voorbeeld voert de benodigde opschoning aan het einde uit.
Eén. Machtigingen intrekken om een XML-schemaverzameling te maken
In dit voorbeeld wordt een aanmelding en een voorbeelddatabase gemaakt. Er wordt ook een relationeel schema in de database toegevoegd. Aanvankelijk krijgt de aanmelding ALTER-machtiging voor zowel relationele schema's als de benodigde rechten voor het maken van XML-schemaverzamelingen. In het voorbeeld wordt vervolgens de machtiging ALTER ingetrokken voor een van de relationele schema's in de database. Hiermee voorkomt u dat het inloggen een XML-schemaverzameling maakt.
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