sp_changeobjectowner (Transact-SQL)

適用対象:SQL Server

現在のデータベース内のオブジェクトの所有者を変更します。

重要

このストアド プロシージャは、Microsoft SQL Server 2000 (8.x) で使用できるオブジェクトでのみ機能します。 この機能は、 SQL Serverの将来のバージョンで削除される予定です。 新規の開発作業ではこの機能を使用しないようにし、現在この機能を使用しているアプリケーションは修正することを検討してください。 代わりに ALTER SCHEMA または ALTER AUTHORIZATION を使用してください。 sp_changeobjectownerは、スキーマと所有者の両方を変更します。 以前のバージョンの SQL Server との互換性を維持するために、このストアド プロシージャは、現在の所有者と新しい所有者の両方がデータベース ユーザー名と同じ名前を持つスキーマを所有している場合にのみ、オブジェクト所有者を変更します。

重要

このストアド プロシージャには、新しい権限要件が追加されています。

Transact-SQL 構文表記規則

構文

  
sp_changeobjectowner [ @objname = ] 'object' , [ @newowner = ] 'owner'  

引数

[ @objname = ] 'object' 現在のデータベース内の既存のテーブル、ビュー、ユーザー定義関数、またはストアド プロシージャの名前です。 objectnvarchar(776)で、既定値はありません。 オブジェクトは、既存のオブジェクトの所有者がexisting_owner形式で修飾できます。スキーマとその所有者が同じ名前を持つ場合はオブジェクト

[ @newowner = ] 'owner_ ' オブジェクトの新しい所有者になるセキュリティ アカウントの名前を指定します。 ownersysname で、既定値はありません。 所有者 は、現在のデータベースにアクセスできる有効なデータベース ユーザー、サーバー ロール、Microsoft Windows ログイン、または Windows グループである必要があります。 新しい所有者が、対応するデータベース レベルのプリンシパルがない Windows ユーザーまたは Windows グループである場合、データベース ユーザーが作成されます。

リターン コードの値

0 (成功) または 1 (失敗)

解説

sp_changeobjectownerは、オブジェクトから既存のすべてのアクセス許可を削除します。 sp_changeobjectownerの実行後に保持するアクセス許可を再適用する必要があります。 そのため、sp_changeobjectownerを実行する前に、既存のアクセス許可をスクリプト化することをお勧めします。 オブジェクトの所有権が変更されたら、スクリプトを使用してアクセス許可を再適用できます。 権限スクリプトを実行する前に、そのスクリプトでオブジェクトの所有者を変更する必要があります。

セキュリティ保護可能なオブジェクトの所有者を変更するには、ALTER AUTHORIZATION を使用します。 スキーマを変更するには、ALTER SCHEMA を使用します。

アクセス許可

db_owner固定データベース ロールのメンバーシップ、またはdb_ddladmin固定データベース ロールとdb_securityadmin固定データベース ロールの両方のメンバーシップ、およびオブジェクトに対する CONTROL 権限が必要です。

次の例では、authors テーブルの所有者を Corporate\GeorgeW に変更します。

EXEC sp_changeobjectowner 'authors', 'Corporate\GeorgeW';  
GO  

参照

ALTER SCHEMA (Transact-SQL)
ALTER DATABASE (Transact-SQL)
ALTER AUTHORIZATION (Transact-SQL)
sp_changedbowner (Transact-SQL)
システム ストアド プロシージャ (Transact-SQL)