XML スキーマ コレクションを作成する権限は、次のいずれかを使用して取り消すことができます。
リレーショナル スキーマの ALTER 権限を取り消します。 その後、プリンシパルはリレーショナル スキーマに XML スキーマ コレクションを作成できません。 ただし、プリンシパルは、同じデータベース内の他のリレーショナル スキーマでもこれを行うことができます。
プリンシパルのデータベースに対する ALTER ANY SCHEMA 権限を取り消します。 その後、プリンシパルはデータベース内のどこにも XML スキーマ コレクションを作成できません。
プリンシパルのデータベースに対する CREATE XML SCHEMA COLLECTION または ALTER XML SCHEMA COLLECTION 権限を取り消します。 これにより、プリンシパルがデータベース内に XML スキーマ コレクションをインポートできなくなります。 データベースに対する ALTER 権限または CONTROL 権限を取り消す場合も、同じ効果があります。
既存の XML スキーマ コレクション オブジェクトに対する権限の取り消し
XML スキーマ コレクションで取り消すことができるアクセス許可と結果を次に示します。
ALTER 権限を取り消すと、XML スキーマ コレクションの内容を変更するプリンシパルの権限が取り消されます。
TAKE OWNERSHIP 権限を取り消すと、プリンシパルが XML スキーマ コレクションの所有権を譲渡する権限が取り消されます。
REFERENCES 権限を取り消すと、XML スキーマ コレクションを使用して XML 型の列、テーブルおよびビュー、およびパラメーターを入力または制約するプリンシパルの機能が取り消されます。 また、他の XML スキーマ コレクションからこのスキーマ コレクションを参照する権限も取り消します。
VIEW DEFINITION 権限を取り消すと、XML スキーマ コレクションの内容を表示するプリンシパルの機能が取り消されます。
EXECUTE 権限を取り消すと、XML コレクションによって型指定または制約されている列、変数、およびパラメーターに値を挿入または更新するプリンシパルの機能が取り消されます。 また、このような xml 型の列、変数、またはパラメーターに対してクエリを実行する機能も取り消します。
例示
次の例のシナリオは、XML スキーマのアクセス許可のしくみを示しています。 各例では、必要なテスト データベース、リレーショナル スキーマ、ログインを作成します。 これらのログインには、必要な XML スキーマ コレクションのアクセス許可が付与されます。 各例では、最後に必要なクリーンアップを行います。
ある。 XML スキーマ コレクションを作成するためのアクセス許可の取り消し
この例では、ログインとサンプル データベースを作成します。 また、データベースにリレーショナル スキーマが追加されます。 最初に、ログインには、リレーショナル スキーマと、XML スキーマ コレクションを作成するために必要なその他のアクセス許可の両方に対する ALTER 権限が付与されます。 次に、データベース内のいずれかのリレーショナル スキーマに対する ALTER 権限を取り消します。 これにより、ログインで XML スキーマ コレクションが作成されなくなります。
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="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
-- 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="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
-- 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="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
-- 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="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
こちらもご覧ください
XML データ (SQL Server)
型指定された XML と型指定されていない XML の比較
XML スキーマ コレクション (SQL Server)
サーバー上の XML スキーマ コレクションの要件と制限事項