次の方法で共有


XML スキーマ コレクションに対する権限の取り消し

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 スキーマ コレクションの要件と制限事項