ALTER AUTHORIZATION (Transact-SQL)
セキュリティ保護可能なエンティティの所有権を変更します。
構文
ALTER AUTHORIZATION
ON [ <class_type>] entity_name
TO { SCHEMA OWNER | principal_name }
<class_type> ::=
{
OBJECT | ASSEMBLY | ASYMMETRIC KEY | CERTIFICATE
| CONTRACT | TYPE | DATABASE | ENDPOINT | FULLTEXT CATALOG
| FULLTEXT STOPLIST | MESSAGE TYPE | REMOTE SERVICE BINDING
| ROLE | ROUTE | SCHEMA | SERVICE | SYMMETRIC KEY
| XML SCHEMA COLLECTION
}
引数
<class_type>
所有者を変更するエンティティのセキュリティ保護可能なクラスを指定します。既定値は OBJECT です。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)」を参照してください。 |
また、次の点も注意してください。
重要 |
---|
オブジェクトの所有者を調べる唯一の信頼性のある方法は、sys.objects カタログ ビューに対するクエリを実行する方法です。型の所有者を調べる唯一の信頼性のある方法は、TYPEPROPERTY 関数を使用する方法です。 |
特殊ケースと条件
次の表は、権限を変更する際の特殊ケースと例外、および条件の一覧です。
クラス |
条件 |
---|---|
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
変更履歴
変更内容 |
---|
ASYMMETRIC KEY を一覧に追加しました。 |
<entity_type> を <class_type> に修正しました。 |