sp_changeobjectowner (Transact-SQL)

適用対象: SQL Server

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

重要

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

Transact-SQL 構文表記規則

構文

sp_changeobjectowner
    [ @objname = ] N'objname'
    , [ @newowner = ] N'newowner'
[ ; ]

引数

[ @objname = ] N'objname'

@objnamenvarchar(776)で、既定値はありません。

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

[ @newowner = ] N'newowner'

オブジェクトの新しい所有者になるセキュリティ アカウントの名前。 @newownersysname で、既定値はありません。 @newowner は、現在のデータベースにアクセスできる有効なデータベース ユーザー、サーバー ロール、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