SETUSER (Transact-SQL)

固定サーバー ロール sysadmin または固定データベース ロール db_owner のメンバが、別のユーザーの権限を借用できるようにします。

重要な注意事項重要

SETUSER は旧バージョンとの互換性のためだけに用意されています。SETUSER は、将来の SQL Server リリースではサポートされない可能性があります。代わりに EXECUTE AS を使用することをお勧めします。

トピック リンク アイコンTransact-SQL 構文表記規則

構文

SETUSER [ 'username' [ WITH NORESET ] ] 

引数

  • 'username'
    権限の借用の対象となる、現在のデータベース内の SQL Server ユーザーまたは Windows ユーザーの名前です。username を指定しない場合、ユーザーの権限を借用するシステム管理者またはデータベース所有者の元の ID 状態に戻ります。

  • WITH NORESET
    後に username の指定されていない SETUSER ステートメントがあっても、システム管理者またはデータベース所有者の元の ID 状態にリセットされないことを指定します。

説明

固定サーバー ロール sysadmin または固定データベース ロール db_owner のメンバは、SETUSER を使用して別のユーザーの ID を借用し、そのユーザーの権限をテストできます。

SETUSER は、SQL Server ユーザーに対してだけ使用してください。SETUSER は Windows ユーザーに対してはサポートされていません。SETUSER を使用して別のユーザーの ID の権限を借用している場合、権限を借用しているユーザーが作成するすべてのオブジェクトは、権限を借用されているユーザーによって所有されます。たとえば、データベース所有者が Margaret というユーザーの ID を借用し、orders というテーブルを作成する場合、orders テーブルは、システム管理者ではなく、Margaret によって所有されます。

SETUSER ステートメントは、別の SETUSER ステートメントを実行するか、現在のデータベースを USE ステートメントで変更するまで有効になります。

注意

SETUSER WITH NORESET を使用すると、データベース所有者またはシステム管理者が自分の権限を回復するには、いったんログ オフしてからもう一度ログ オンするしかありません。

権限

固定サーバー ロール sysadmin または固定データベース ロール db_owner のメンバシップである必要があります。

この例では、データベース所有者が別のユーザーの ID を借用する方法を示します。ユーザー mary は、computer_types という名前のテーブルを作成しました。SETUSER を使用して、データベース所有者は mary の権限を借用し、ユーザー joe に computer_types テーブルへのアクセス権を与え、その後自分自身の ID をリセットします。

SETUSER 'mary'
GO
GRANT SELECT ON computer_types TO joe
GO
SETUSER