sp_changeobjectowner (Transact-SQL)
現在のデータベース内のオブジェクトの所有者を変更します。
重要 |
---|
このストアド プロシージャは、Microsoft SQL Server 2000 で利用可能なオブジェクトに対してのみ機能します。この機能は、将来のバージョンの Microsoft SQL Server では削除される予定です。新しい開発作業では、この機能の使用を避け、現在この機能を使用しているアプリケーションは修正するようにしてください。代わりに ALTER SCHEMA または ALTER AUTHORIZATION を使用してください。sp_changeobjectowner は、スキーマと所有者の両方を変更します。以前のバージョンの SQL Server との互換性を維持するために、現在の所有者と新しい所有者がデータベースのユーザー名と同じ名前のスキーマを所有している場合は、このストアド プロシージャはオブジェクトの所有者だけを変更します。 |
重要 |
---|
このストアド プロシージャには、新しい権限要件が追加されています。 |
構文
sp_changeobjectowner [ @objname = ] 'object' , [ @newowner = ] 'owner'
引数
[ @objname = ] 'object'
現在のデータベース内の既存のテーブル、ビュー、ユーザー定義関数、またはストアド プロシージャの名前です。object は nvarchar(776) であり、既定値はありません。スキーマとその所有者の名前が同じ場合、object は、existing_owner**.**object の形式にして、既存のオブジェクト所有者で修飾できます。[ @newowner=] **'**owner '
オブジェクトの新しい所有者となるセキュリティ アカウントの名前です。owner は sysname であり、既定値はありません。owner は、現在のデータベースにアクセスできる有効なデータベース ユーザー、サーバー ロール、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