ALTER AUTHORIZATION (Transact-SQL)
更新 : 2005 年 12 月 5 日
セキュリティ保護可能なエンティティの所有権を変更します。
構文
ALTER AUTHORIZATION
ON [ <entity_type> :: ] entity_name
TO { SCHEMA OWNER | principal_name }
<entity_type> ::=
{
Object | Type | XML Schema Collection | Fulltext Catalog | Schema
| Assembly | Role | Message Type | Contract | Service
| Remote Service Binding | Route | Symmetric Key | Endpoint
| Certificate | Database
}
引数
- <entity_type> ::
所有者を変更するエンティティのクラスを指定します。既定値はオブジェクトです。
- entity_name
エンティティの名前を指定します。
- principal_name
エンティティの所有者となるプリンシパルの名前を指定します。
解説
ALTER AUTHORIZATION は、所有者が存在するエンティティの所有権を変更するときに使用できます。データベースに含まれるエンティティの所有権は、データベース レベルのプリンシパルに譲渡できます。サーバー レベルのエンティティの所有権は、サーバー レベルのプリンシパルだけに譲渡できます。
重要 : |
---|
SQL Server 2005 では、ユーザーは他のデータベース ユーザーが所有するスキーマに含まれる OBJECT または TYPE を所有できます。これは、以前のバージョンの SQL Server の動作から変更されています。詳細については、「ユーザーとスキーマの分離」、「OBJECTPROPERTY (Transact-SQL)」、および「TYPEPROPERTY (Transact-SQL)」を参照してください。 |
スキーマに含まれるエンティティのうち、種類が "オブジェクト" のエンティティ (テーブル、ビュー、関数、プロシージャ、キュー、およびシノニム) の所有権は譲渡できます。
リンク サーバー、統計、制約、ルール、デフォルト、トリガ、Service Broker キュー、資格情報、パーティション関数、パーティション構成、データベース マスタ キー、サービス マスタ キー、およびイベント通知の各エンティティの所有権は譲渡できません。
セキュリティ保護可能なリソース クラス (サーバー、ログイン、ユーザー、アプリケーション ロール、および列) のメンバの所有権は譲渡できません。
SCHEMA OWNER オプションは、スキーマに含まれるエンティティの所有権を譲渡する場合にのみ有効です。SCHEMA OWNER を使用すると、エンティティの所有権は、所属するスキーマの所有者に譲渡されます。スキーマに含まれるのは、OBJECT、TYPE、または XML SCHEMA COLLECTION クラスのエンティティだけです。
対象のエンティティがデータベース以外であり、エンティティを新しい所有者に譲渡する場合は、すべての権限が削除されます。
注意 : |
---|
SQL Server 2005 でのスキーマの動作は、以前のバージョンの SQL Server から変更されました。コードで、スキーマがデータベース ユーザーと同じであることが前提となっている場合、正しい結果が返されない場合があります。CREATE SCHEMA、ALTER SCHEMA、DROP SCHEMA、CREATE USER、ALTER USER、DROP USER、CREATE ROLE、ALTER ROLE、DROP ROLE、CREATE APPROLE、ALTER APPROLE、DROP APPROLE、ALTER AUTHORIZATION のいずれかの DDL ステートメントが使用されたことのあるデータベースでは、sysobjects を含む以前のカタログ ビューを使用しないでください。このようなデータベースでは、新しいカタログ ビューを使用する必要があります。新しいカタログ ビューでは、SQL Server 2005 で導入されたプリンシパルとスキーマの分離が考慮されます。カタログ ビューの詳細については、「カタログ ビュー (Transact-SQL)」を参照してください。 |
特殊ケースと条件
次の表は、権限を変更する際の特殊ケースと例外、および条件の一覧です。
クラス | 条件 |
---|---|
DATABASE |
システム データベース master、model、tempdb、リソース テーブル、または分散データベースとして使用されるデータベースの所有者は変更できません。プリンシパルは、ログインであることが必要です。プリンシパルが Windows ログインで、対応する SQL Server ログインがない場合、そのプリンシパルには、データベースに対する CONTROL SERVER 権限と TAKE OWNERSHIP 権限が必要です。プリンシパルが SQL Server ログインの場合、そのプリンシパルは証明書や非対称キーにマップできません。依存する別名は、新しいデータベース所有者にマップされます。DBO SID は、現在のデータベースと sys.databases の両方で更新されます。 |
OBJECT |
トリガ、制約、ルール、デフォルト、統計、システム オブジェクト、キュー、インデックス付きビュー、またはインデックス付きビューのあるテーブルの所有権は変更できません。 |
SCHEMA |
所有権を譲渡すると、スキーマに含まれるオブジェクトの所有者が明示的に指定されていない場合は、そのオブジェクトに対する権限が削除されます。sys、dbo、または information_schema の所有者は変更できません。 |
TYPE |
sys または information_schema に属する TYPE の所有権は変更できません。 |
CONTRACT、MESSAGE TYPE、SERVICE |
システム エンティティの所有権は変更できません。 |
SYMMETRIC KEY |
グローバル一時キーの所有権は変更できません。 |
CERTIFICATE または ASYMMETRIC KEY |
これらのエンティティの所有権をロールまたはグループに譲渡することはできません。 |
ENDPOINT |
プリンシパルは、ログインであることが必要です。 |
権限
エンティティに対する TAKE OWNERSHIP 権限が必要です。新しい所有者がステートメントを実行するユーザーではない場合は、次の条件に応じた権限が必要になります。1) 新しい所有者がユーザーまたはログインの場合は、新しい所有者に対する IMPERSONATE 権限。2) 新しい所有者がロールまたはロールのメンバシップの場合は、ロールに対する ALTER 権限。3) 新しい所有者がアプリケーション ロールの場合は、アプリケーション ロールに対する ALTER 権限。
例
A. テーブルの所有権を譲渡する
次の例では、テーブル Sprockets
の所有権をユーザー MichikoOsada
に譲渡します。このテーブルは、スキーマ Parts
内にあります。
ALTER AUTHORIZATION ON OBJECT::Parts.Sprockets TO MichikoOsada;
GO
クエリは次のようにもできます。
ALTER AUTHORIZATION ON Parts.Sprockets TO MichikoOsada;
GO
B. ビューの所有権をスキーマの所有者に譲渡する
次の例では、ビュー ProductionView06
の所有権を、所属するスキーマの所有者に譲渡します。このビューは、スキーマ Production
内にあります。
ALTER AUTHORIZATION ON OBJECT::Production.ProductionView06 TO SCHEMA OWNER;
GO
C. スキーマの所有権をユーザーに譲渡する
次の例では、スキーマ SeattleProduction11
の所有権をユーザー SandraAlayo
に譲渡します。
ALTER AUTHORIZATION ON SCHEMA::SeattleProduction11 TO SandraAlayo;
GO
D. エンドポイントの所有権を SQL Server ログインに譲渡する
次の例では、エンドポイント CantabSalesServer1
の所有権をユーザー JaePak
に譲渡します。エンドポイントはサーバー レベルのセキュリティ保護可能なリソースであるため、エンドポイントを譲渡できるのはサーバー レベルのプリンシパルだけです。
ALTER AUTHORIZATION ON ENDPOINT::CantabSalesServer1 TO JaePak;
GO
参照
関連項目
OBJECTPROPERTY (Transact-SQL)
TYPEPROPERTY (Transact-SQL)
EVENTDATA (Transact-SQL)
その他の技術情報
ヘルプおよび情報
変更履歴
リリース | 履歴 |
---|---|
2005 年 12 月 5 日 |
|