次の方法で共有


sp_unsetapprole (Transact-SQL)

適用対象: SQL サーバー

アプリケーション ロールを非アクティブ化し、以前のセキュリティ コンテキストに戻します。

Transact-SQL 構文表記規則

構文

sp_unsetapprole [ @cookie = ] cookie
[ ; ]

引数

アプリケーション ロールがアクティブ化されたときに作成された Cookie を指定します。 @cookievarbinary(8000)で、既定値はありません。 Cookie は、 sp_setapprole (Transact-SQL)によって作成されます。

Note

現在、sp_setapproleの cookie OUTPUT パラメーターは、正しい最大長である varbinary(8000)として文書化されています。 ただし、現在の実装では varbinary(50) を返します。 今後のリリースで Cookie の戻りサイズが増加した場合でもアプリケーションが正常に動作し続けるために、アプリケーションは引き続き varbinary(8000) を予約する必要があります。

リターン コードの値

0 (成功) と 1 (失敗)

解説

sp_setapproleを使用してアプリケーション ロールをアクティブ化した後、ユーザーがサーバーから切断されるか、sp_unsetapprole実行されるまで、ロールはアクティブなままになります。

アプリケーション ロールの概要については、「 アプリケーション ロール」を参照してください。

アクセス許可

public のメンバーシップとアプリケーション ロールがアクティブ化されたときに保存された Cookie に関する知識が必要です。

次の例では、パスワード Sales11 が設定されているアプリケーション ロール fdsd896#gfdbfdkjgh700mM をアクティブ化し、クッキーを作成します。 この例では、現在のユーザーの名前が返されます。その後、sp_unsetapprole を実行して元のコンテキストに戻します。

DECLARE @cookie VARBINARY(8000);

EXEC sp_setapprole 'Sales11',
    'fdsd896#gfdbfdkjgh700mM',
    @fCreateCookie = true,
    @cookie = @cookie OUTPUT;

-- The application role is now active.
SELECT USER_NAME();

-- Return the name of the application role, Sales11.
EXEC 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