SETUSER (Transact-SQL)
固定サーバー ロール sysadmin または固定データベース ロール db_owner のメンバが、別のユーザーの権限を借用できるようにします。
重要 |
---|
SETUSER は旧バージョンとの互換性のためだけに用意されています。SETUSER は、将来の SQL Server リリースではサポートされない可能性があります。代わりに EXECUTE AS を使用することをお勧めします。 |
構文
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