sp_changedbowner (Transact-SQL)
適用対象: SQL Server
現在のデータベースの所有者を変更します。
重要
この機能は、 SQL Serverの将来のバージョンで削除される予定です。 新規の開発作業ではこの機能を使用しないようにし、現在この機能を使用しているアプリケーションは修正することを検討してください。 代わりに ALTER AUTHORIZATION を使用してください。
構文
sp_changedbowner
[ @loginame = ] N'loginame'
[ , [ @map = ] 'map' ]
[ ; ]
引数
[ @loginame = ] N'loginame'
現在のデータベースの新しい所有者のログイン ID。 @loginame は sysname で、既定値はありません。 @loginame は、既存の SQL Server ログインまたは Windows ユーザーである必要があります。 @loginame は、データベース内の既存のユーザー セキュリティ アカウントを介してデータベースに既にアクセスできる場合、現在のデータベースの所有者になることはできません。 このシナリオを回避するには、最初に現在のデータベース内のユーザーを削除します。
[ @map = ] 'map'
このパラメーターは非推奨であり、スクリプトの下位互換性のために保持されます。
リターン コードの値
0
(成功) または 1
(失敗)。
解説
sp_changedbowner
が実行されると、新しい所有者はデータベース内のdbo
ユーザーと呼ばれます。 dbo
ユーザーには、データベース内のすべてのアクティビティを実行するための暗黙的なアクセス許可があります。
master
、model
、またはtempdb
システム データベースの所有者は変更できません。
有効な @loginame 値の一覧を表示するには、 sp_helplogins
ストアド プロシージャを実行します。
@loginame パラメーターのみを使用してsp_changedbowner
を実行すると、データベースの所有権が@loginameに変更されます。
ALTER AUTHORIZATION
ステートメントを使用して、セキュリティ保護可能なリソースの所有者を変更できます。 詳細については、「 ALTER AUTHORIZATION」を参照してください。
アクセス許可
データベースに対する TAKE OWNERSHIP
権限が必要です。 新しい所有者がデータベースに対応するユーザーを持っている場合は、ログイン IMPERSONATE
アクセス許可が必要です。それ以外の場合は、サーバー CONTROL SERVER
アクセス許可が必要です。
例
次の例では、ログイン Albert
を、現在のデータベースの所有者にします。
EXEC sp_changedbowner 'Albert';