SETUSER (Transact-SQL)

適用対象:SQL ServerAzure SQL Managed Instance

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

重要

SETUSER 後方互換性のみのために含まれています。 SETUSER将来のSQL Serverリリースではサポートされない可能性があります。 代わりに EXECUTE AS を使用することをお勧めします。

Transact-SQL 構文表記規則

構文

  
SETUSER [ 'username' [ WITH NORESET ] ]   

引数

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

NORESETと共に
ユーザーが指定されていない後続のSETUSER文でユーザーIDをシステム管理者またはデータベース所有者にリセットしてはならないと規定しています。

解説

SETUSER システム 管理者 の固定サーバーロールのメンバーやデータベースの所有者が、他のユーザーの身分を借りてそのユーザーの権限をテストするために使用できます。 db_owner 固定データベース ロールのメンバーシップが十分ではありません。

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

SETUSER 次の SETUSER 文が発行されるか、現在のデータベースがUse 文で変更されるまで有効です。

Note

SETUSER WITH NORESETを使用する場合、データベース所有者またはシステム管理者はログアウトし、再びログインして自分の権利を再確立しなければなりません。

アクセス許可

sysadmin 固定サーバー ロールのメンバーシップを持っているか、またはデータベースの所有者である必要があります。 db_owner 固定データベース ロールのメンバーシップでは十分ではありません。

この例では、データベース所有者が別のユーザーの ID を借用する方法を示します。 ユーザー mary は、computer_types という名前のテーブルを作成しました。 SETUSERを使うことで、データベース所有者はmaryを装ってユーザーjoecomputer_typesテーブルへのアクセスを許可し、その後自分のアイデンティティをリセットします。

SETUSER 'mary';  
GO  
GRANT SELECT ON computer_types TO joe;  
GO  
--To revert to the original user  
SETUSER;  

参照

DENY (Transact-SQL)
GRANT (Transact-SQL)
REVOKE (Transact-SQL)
使用(Transact-SQL)