次の方法で共有


sp_changedbowner (Transact-SQL)

適用対象: SQL Server

現在のデータベースの所有者を変更します。

重要

この機能は、 SQL Serverの将来のバージョンで削除される予定です。 新規の開発作業ではこの機能を使用しないようにし、現在この機能を使用しているアプリケーションは修正することを検討してください。 代わりに ALTER AUTHORIZATION を使用してください。

Transact-SQL 構文表記規則

構文

sp_changedbowner
    [ @loginame = ] N'loginame'
    [ , [ @map = ] 'map' ]
[ ; ]

引数

[ @loginame = ] N'loginame'

現在のデータベースの新しい所有者のログイン ID。 @loginamesysname で、既定値はありません。 @loginame は、既存の SQL Server ログインまたは Windows ユーザーである必要があります。 @loginame は、データベース内の既存のユーザー セキュリティ アカウントを介してデータベースに既にアクセスできる場合、現在のデータベースの所有者になることはできません。 このシナリオを回避するには、最初に現在のデータベース内のユーザーを削除します。

[ @map = ] 'map'

このパラメーターは非推奨であり、スクリプトの下位互換性のために保持されます。

リターン コードの値

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

解説

sp_changedbownerが実行されると、新しい所有者はデータベース内のdbo ユーザーと呼ばれます。 dbo ユーザーには、データベース内のすべてのアクティビティを実行するための暗黙的なアクセス許可があります。

mastermodel、またはtempdbシステム データベースの所有者は変更できません。

有効な @loginame 値の一覧を表示するには、 sp_helplogins ストアド プロシージャを実行します。

@loginame パラメーターのみを使用してsp_changedbownerを実行すると、データベースの所有権が@loginameに変更されます。

ALTER AUTHORIZATION ステートメントを使用して、セキュリティ保護可能なリソースの所有者を変更できます。 詳細については、「 ALTER AUTHORIZATION」を参照してください。

アクセス許可

データベースに対する TAKE OWNERSHIP 権限が必要です。 新しい所有者がデータベースに対応するユーザーを持っている場合は、ログイン IMPERSONATE アクセス許可が必要です。それ以外の場合は、サーバー CONTROL SERVER アクセス許可が必要です。

次の例では、ログイン Albert を、現在のデータベースの所有者にします。

EXEC sp_changedbowner 'Albert';