Udostępnij za pośrednictwem


Odmawianie uprawnień w kolekcji schematu XML

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

Odmawianie uprawnień do tworzenia kolekcji schematu XML

Można odmówić uprawnienia, aby utworzyć kolekcja schematu XML w następujący sposób:

  • Odmów uprawnienia zmiany schematu relacyjnego.

  • Odmów FORMANTU na schematu relacyjnego, aby odmówić uprawnienia wszystkich schematu relacyjnego i zawartych obiektów.

  • Odmów zmiany dowolnego SCHEMATU bazy danych.W takim przypadek główny zobowiązany nie można utworzyć kolekcja schematu XML gdziekolwiek w bazie danych.Należy również zauważyć, że odmawianie uprawnień ALTER lub FORMANTU na bazie odrzuca wszystkie uprawnienia na wszystkich obiektach w bazie danych.

Odmawianie uprawnień do obiektu kolekcji schematu XML

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

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

  • Odmawianie uprawnień kontroli odmawia głównej możliwość wykonywania dowolnej operacji kolekcja schematu XML.

  • Odmawianie uprawnień odwołania odmawia głównej możliwość wpisz lub ograniczyć kolumny Typ xml i parametry przy użyciu kolekcja schematu XML.Odrzuca również głównej możliwości do odwoływania się do tej kolekcja schematu XML od innych kolekcja schematu XML.

  • Odmawianie uprawnień VIEW DEFINITION odmawia głównej możliwość wyświetlania zawartości kolekcja schematu XML.

  • Odmawianie uprawnień Wykonywanie odmawia głównej możliwość wstawiania lub aktualizacja wartości w kolumnach, zmiennych i parametrów, które są wpisane lub ograniczonego kolekcja schematu XML.Odrzuca również głównej możliwość kwerendy wartości w tych kolumn typu xml i zmienne.

Przykłady

Scenariusze w poniższych przykładach pokazują, jak działają uprawnienia schematu XML.Każdy przykład tworzy bazy danych koniecznych testów, schematy relacyjnych i logowania.Te identyfikatory logowania przyznawane są uprawnienia niezbędne kolekcja schematu XML.Każdy przykład wykonuje niezbędne Oczyszczanie na końcu.

A.Uniemożliwia użytkownikowi tworzenie kolekcja schematu XML

Jednym ze sposobów, aby uniemożliwić użytkownikowi tworzenie kolekcja schematów XML jest odmawiając uprawnienie zmiany schematu relacyjnego.Pokazano to na przykładzie poniżej.

W przykładzie tworzone przez użytkownika TestLogin1i bazy danych.Tworzy również schematu relacyjnego oprócz dbo schematu bazy danych.Początkowo CREATE XML SCHEMA uprawnienie umożliwia użytkownikowi tworzenie kolekcja schematu w dowolnym miejscu bazy danych.Przykład następnie odmawia ALTER uprawnienia użytkownika na jednym z relacyjnych schematów.Zapobiega to tworzenie kolekcja schematu XML w tym schematu relacyjnego użytkownika.

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ń kolekcja schematu XML

W poniższym przykładzie pokazano, jak można odmówić określonych uprawnień na istniejącą kolekcja schematu XML do identyfikatora logowania.W tym przykładzie logowania test odmowa uprawnienia odwołania istniejących kolekcja schematu XML.

W przykładzie tworzone przez użytkownika TestLogin1i bazy danych.Tworzy również schematu relacyjnego oprócz dbo schematu bazy danych.Początkowo CREATE XML SCHEMA uprawnienie umożliwia użytkownikowi tworzenie kolekcja schematu w dowolnym miejscu bazy danych.

REFERENCES Uprawnienie do kolekcja schematu XML umożliwia TestLogin1 Użycie schematu w tworzeniu maszynowy xml kolumna w tabela.Jeśli REFERENCES odmowy uprawnień kolekcja schematu XML, zapobiega TestLogin1 z pomocą 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