SETUSER (Transact-SQL)

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

ms186297.note(ja-jp,SQL.90).gif重要 :
SETUSER は旧バージョンとの互換性を維持するためだけに Microsoft SQL Server 2005 に含まれています。SETUSER は、将来の SQL Server リリースではサポートされない可能性があります。代わりに EXECUTE AS を使用することをお勧めします。

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

構文

SETUSER [ 'username' [ WITH NORESET ] ] 

引数

'username'

権限の借用の対象となる、現在のデータベース内の SQL Server または Microsoft 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 ステートメントで変更するまで有効になります。

ms186297.note(ja-jp,SQL.90).gifメモ :
SETUSER WITH NORESET を使用すると、データベース所有者またはシステム管理者が自分の権限を回復するには、いったんログ オフしてからもう一度ログ オンするしかありません。

権限

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

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

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

参照

関連項目

DENY (Transact-SQL)
GRANT (Transact-SQL)
REVOKE (Transact-SQL)
USE (Transact-SQL)

ヘルプおよび情報

SQL Server 2005 の参考資料の入手