sp_setapprole (Transact-SQL)

現在のデータベースのアプリケーション ロールに関連付けられている権限をアクティブにします。

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

構文

sp_setapprole [ @rolename = ] 'role',
    [ @password = ] { encrypt N'password' } 
      |
        'password' [ , [ @encrypt = ] { 'none' | 'odbc' } ]
        [ , [ @fCreateCookie = ] true | false ]
    [ , [ @cookie = ] @cookie OUTPUT ]

引数

  • [ @rolename = ] 'role'
    現在のデータベースで定義されているアプリケーション ロールの名前を指定します。role のデータ型は sysname で、既定値はありません。role は現在のデータベースに存在する必要があります。

  • [ @password = ] { encrypt N'password' }
    アプリケーション ロールをアクティブにするために必要なパスワードを指定します。password のデータ型は sysname で、既定値はありません。password は、ODBC 暗号化関数を使用して暗号化できます。暗号化関数を使用するときには、最初の引用符の前に N を追加して、パスワードを Unicode 文字列に変換する必要があります。

    暗号化オプションは、SqlClient を使用する接続ではサポートされません。

    重要な注意事項重要

    ODBC 暗号化関数では、暗号化は提供されません。ネットワーク経由で転送されるパスワードを保護する場合は、この関数は使用しないでください。情報をネットワーク経由で転送する場合は、SSL または IPSec を使用します。

  • @encrypt = 'none'
    暗号化を使用しないことを示します。パスワードはプレーン テキストとして SQL Server に渡されます。これは既定のオプションです。

  • @encrypt= 'odbc'
    パスワードを SQL Server データベース エンジンに送信する前に、ODBC で ODBC 暗号化関数を使用してパスワードを暗号化します。これは、ODBC クライアントまたは OLE DB Provider for SQL Server を使用している場合にのみ指定できます。

  • [ @fCreateCookie = ] true | false
    cookie を作成するかどうかを指定します。暗黙的に、true は 1 に変換され、false は 0 に変換されます。

  • [ @cookie = ] @cookie OUTPUT
    Cookie を含める出力パラメータを指定します。cookie が生成されるのは、@fCreateCookie の値が true の場合のみです。データ型は varbinary(8000) です。

リターン コードの値

0 (成功) または 1 (失敗)

説明

アプリケーション ロールは、sp_setapprole を使用してアクティブ化された後、ユーザーがサーバーから切断するか、sp_unsetapprole が実行されるまで、アクティブな状態を維持します。sp_setapprole は、直接の Transact-SQL ステートメントでのみ実行できます。他のストアド プロシージャ内やユーザー定義のトランザクション内では、sp_setapprole は実行できません。

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

セキュリティに関する注意セキュリティに関する注意

ネットワーク経由で送信されるアプリケーション ロールのパスワードを保護するには、アプリケーション ロールを有効化するとき常に、暗号化された接続を使用してください。

Microsoft ODBC の encrypt オプションは、SqlClient ではサポートされていません。資格情報を格納する必要がある場合は、Crypto API 関数を使用して暗号化します。パラメータ password は、一方向のハッシュとして格納されます。以前のバージョンの SQL Server と互換性を保つため、sp_addapprole でパスワードの複雑性ポリシーは適用されません。パスワードの複雑性ポリシーを適用するには、CREATE APPLICATION ROLE を使用します。

権限

public のメンバシップと、ロールのパスワード情報が必要です。

A. オプションを暗号化せずにアプリケーション ロールをアクティブにする

次の例では、アプリケーション ロール SalesAppRole をアクティブにします。このロールには、プレーン テキストのパスワード AsDeF00MbXX が設定されており、現在のユーザーが使用するアプリケーション用に特別に設計された権限が与えられています。

EXEC sp_setapprole 'SalesApprole', 'AsDeF00MbXX';
GO

次の例では、パスワード fdsd896#gfdbfdkjgh700mM が設定されているアプリケーション ロール Sales11 をアクティブ化し、Cookie を作成します。この例では、現在のユーザーの名前が返されます。その後、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();
-- This will 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
SELECT USER_NAME();
-- This will return the name of the original user. 
GO