適用対象:SQL Server
アプリケーション ロールを非アクティブ化し、以前のセキュリティ コンテキストに戻します。
構文
sp_unsetapprole [ @cookie = ] cookie
[ ; ]
引数
[ @cookie = ] cookie
アプリケーション ロールがアクティブ化されたときに作成された Cookie を指定します。 @cookie は varbinary(8000)で、既定値はありません。 Cookie は、 sp_setapproleによって作成されます。
注
現在、OUTPUT
の cookie sp_setapprole
パラメーターは、正しい最大長である varbinary(8000)として文書化されています。 ただし、現在の実装では varbinary(50) を返します。 今後のリリースで Cookie の戻りサイズが増加した場合でもアプリケーションが正常に動作し続けるために、アプリケーションは引き続き varbinary(8000) を予約する必要があります。
リターン コードの値
0 (成功) と 1 (失敗)
解説
sp_setapprole
を使用してアプリケーション ロールをアクティブ化した後、ユーザーがサーバーから切断されるか、sp_unsetapprole
実行されるまで、ロールはアクティブなままになります。
アプリケーション ロールの概要については、「 アプリケーション ロール」を参照してください。
アクセス許可
public のメンバーシップとアプリケーション ロールがアクティブ化されたときに保存された Cookie に関する知識が必要です。
例
Cookie を使用してアプリケーション ロールをアクティブ化し、前のコンテキストに戻す
次の例では、 Sales11
アプリケーション ロールをアクティブ化し、Cookie を作成します。 この例では、現在のユーザーの名前が返されます。その後、sp_unsetapprole
を実行して元のコンテキストに戻します。
<password>
を強力なパスワードに置き換えます。
DECLARE @cookie AS VARBINARY (8000);
EXECUTE sp_setapprole 'Sales11',
'<password>',
@fCreateCookie = true,
@cookie = @cookie OUTPUT;
-- The application role is now active.
SELECT USER_NAME();
-- Return the name of the application role, Sales11.
EXECUTE sp_unsetapprole @cookie;
-- The application role is no longer active.
-- The original context has now been restored.
GO
-- Return the name of the original user.
SELECT USER_NAME();
GO