Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
gäller för:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Behörighet kan nekas att antingen skapa en ny XML-schemasamling eller använda en befintlig.
Neka behörighet att skapa en XML-schemasamling
Du kan neka behörighet att skapa en XML-schemasamling på följande sätt:
Neka ALTER-behörighet för relationsschemat.
Neka KONTROLL på relationsschemat för att neka alla behörigheter för relationsschemat och för alla inneslutna objekt.
Neka ALTER ANY SCHEMA på databasen. I det här fallet kan huvudansvarig inte skapa en XML-schema-samling någonstans i databasen. Observera också att nekande av ALTER- eller CONTROL-behörighet för databasen nekar alla behörigheter för alla objekt i databasen.
Neka behörigheter för ett XML-schemasamlingsobjekt
Följande är behörigheten som kan nekas för en befintlig XML-schemasamling och resultaten:
Att neka ALTER-behörigheten nekar huvudpersonen möjligheten att ändra innehållet i XML-schemasamlingen.
Att neka behörigheten CONTROL nekas huvudprincipalen möjligheten att utföra alla åtgärder på XML-schemasamlingen.
Om du nekar behörigheten REFERENSER nekas huvudkontot möjligheten att skriva eller begränsa xml-typkolumner och -parametrar med hjälp av XML-schemasamlingen. Det hindrar också huvudmannen möjligheten att referera till denna XML-schemasamling från andra XML-schemasamlingar.
Att neka behörigheten VIEW DEFINITION förvägrar huvudprincipalen möjligheten att se innehållet i en XML-schemasamling.
Att neka behörigheten EXECUTE nekas huvudprincipalen möjligheten att infoga eller uppdatera värdena i kolumner, variabler och parametrar som är typade eller begränsade av XML-schemasamlingen. Det nekar också huvudman möjligheten att ställa frågor mot värdena i samma xml-typkolumner och variabler.
Exempel
Scenarierna i följande exempel visar hur XML-schemabehörigheter fungerar. Varje exempel skapar den nödvändiga testdatabasen, relationsscheman och inloggningar. Dessa inloggningar beviljas nödvändiga XML-schemainsamlingsbehörigheter. Varje exempel gör den nödvändiga rensningen i slutet.
A. Förhindra att en användare skapar en XML-schemasamling
Ett sätt att förhindra en användare från att skapa en XML-schemasamling är genom att neka ALTER-behörigheten för ett relationsschema. Detta visas i följande exempel.
Exemplet skapar en användare, TestLogin1och en databas. Det skapar också ett relationsschema, förutom dbo-schemat, i databasen. Från början gör CREATE XML SCHEMA behörighet att användaren kan skapa en schemasamling var som helst i databasen. Exemplet nekar sedan ALTER behörighet till användaren i något av relationsschemana. Detta hindrar användaren från att skapa en XML-schemasamling i det relationsschemat.
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="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
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="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
B. Neka behörigheter för en XML-schemasamling
I följande exempel visas hur en specifik behörighet för en befintlig XML-schemasamling kan nekas till en inloggning. I det här exemplet nekas en testinloggning REFERENS-behörigheten för en befintlig XML-schemasamling.
Exemplet skapar en användare, TestLogin1och en databas. Det skapar också ett relationsschema, förutom dbo-schemat, i databasen. Från början gör CREATE XML SCHEMA behörighet att användaren kan skapa en schemasamling var som helst i databasen.
Med REFERENCES behörighet för XML-schemasamlingen kan TestLogin1 använda schemat när du skapar en skriven xml kolumn i en tabell. Om behörigheten REFERENCES för XML-schemasamlingen nekas, hindrar det TestLogin1 från att använda XML-schemasamlingen.
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="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
-- 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