適用対象:SQL Server
Azure SQL Managed Instance
固定サーバー ロール sysadmin のメンバーまたはデータベースの所有者が、別のユーザーの権限を借用できるようにします。
重要
SETUSER 後方互換性のみのために含まれています。 SETUSER将来のSQL Serverリリースではサポートされない可能性があります。 代わりに EXECUTE AS を使用することをお勧めします。
構文
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)