ALTER AUTHORIZATION (Transact-SQL)

セキュリティ保護可能なリソースの所有権を変更します。

トピック リンク アイコン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