Udostępnij przez


Denying Permissions on an XML Schema Collection

Aby utworzyć nową kolekcja schemat XML lub użyć istniejącego można odmówić uprawnienia.

Odmawianie uprawnień do tworzenia kolekcja schematów XML

Można odmówić uprawnień do tworzenia kolekcja schematu XML w następujący sposób:

  • Odmów uprawnienia ALTER na schemacie relacyjnej.

  • Odmowa kontroli na relacyjnych schematu, aby odmówić wszystkich uprawnień na schemacie relacyjnych i zawartych obiektów.

  • Odmowa ALTER bez SCHEMA w bazie danych.W takim przypadek główny nie może utworzyć kolekcja schematu XML dowolne miejsce w bazie danych.Należy również zauważyć, że odmawia ALTER lub kontroli uprawnień do bazy danych odrzuca wszystkie uprawnienia na wszystkich obiektach w bazie danych.

Odmawianie uprawnień do obiektu kolekcja schematów XML

Uprawnienia, które można odmówić na istniejącą kolekcja schematu XML, a wyniki są następujące:

  • Odmawianie uprawnień ALTER odrzuca głównej możliwość modyfikowania zawartości kolekcja schematu XML.

  • Odmawianie uprawnień CONTROL odrzuca głównej możliwość wykonywania wszelkich operacji w kolekcja schematu XML.

  • Odmawianie uprawnień materiały referencyjne odrzuca głównej umożliwia wpisanie lub ograniczyć kolumny Typ danych xml i parametry za pomocą kolekcja schematu XML.On również odrzuca głównej mogą odwoływać się do tej kolekcja schematów XML z innej kolekcja schematu XML.

  • Odmawianie uprawnień definicja VIEW odrzuca głównej możliwość wyświetlania zawartości schemat XML kolekcja.

  • Odmawianie uprawnień wykonać odrzuca głównej możliwość wstawienia lub aktualizacji wartości w kolumnach, zmiennych i parametrów, które są wpisane lub ograniczonego zbioru schematu XML.On również odrzuca głównej możliwość przeszukiwania wartości w tych kolumn tego samego typu danych xml i zmienne.

Przykłady

Scenariusze w poniższych przykładach pokazują, jak działają uprawnienia do schematu XML.Każdy przykład tworzy niezbędne testowej bazy danych, relacyjnej schematów i logowania.Te identyfikatory logowania są przyznawane uprawnienia niezbędne kolekcja schematu XML.Każdy przykład nie konieczne oczyszczania na końcu.

A.Uniemożliwia tworzenie kolekcja schematu XML

Jednym ze sposobów, aby zapobiec tworzeniu kolekcja schematu XML jest odmawiając uprawnień ALTER na schemacie relacyjnej.Pokazano to na przykładzie poniżej.

W przykładzie zostanie utworzony przez użytkownika TestLogin1, a bazą danych. Tworzy również relacyjnej schematu, oprócz dbo schemat bazy danych. Początkowo CREATE XML SCHEMA uprawnienie umożliwia użytkownikowi tworzenie kolekcja schematu w dowolne miejsce w bazie danych. W przykładzie następnie go odmawia ALTER uprawnienia dla użytkownika na jeden z relacyjnych schematów. Dzięki temu użytkownik tworzenie kolekcja schematu XML w tym schemacie relacyjnej.

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.Odmawianie uprawnień na kolekcja schematu XML

W poniższym przykładzie pokazano, w jaki sposób można odmówić określonych uprawnień na istniejącą kolekcja schematu XML do identyfikatorów logowania.W tym przykładzie logowania test odmowa uprawnień materiały referencyjne na istniejącą kolekcja schematu XML.

W przykładzie zostanie utworzony przez użytkownika TestLogin1, a bazą danych. Tworzy również relacyjnej schematu, oprócz dbo schemat bazy danych. Początkowo CREATE XML SCHEMA uprawnienie umożliwia użytkownikowi tworzenie kolekcja schematu w dowolne miejsce w bazie danych.

The REFERENCES permission on the XML schema kolekcja lets TestLogin1 use the schema in creating a typed xml kolumna in a tabela. Jeśli REFERENCES Odmowa uprawnień w kolekcja schematu XML, uniemożliwia TestLogin1 Używanie kolekcja schematu XML.

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