sp_setapprole (Transact-SQL)
適用対象:SQL ServerAzure SQL Database
現在のデータベースのアプリケーション ロールに関連付けられているアクセス許可をアクティブにします。
構文
sp_setapprole
[ @rolename = ] N'rolename'
, [ @password = ] N'password'
[ , [ @encrypt = ] 'encrypt' ]
[ , [ @fCreateCookie = ] fCreateCookie ]
[ , [ @cookie = ] cookie OUTPUT ]
[ ; ]
引数
[ @rolename = ] N'rolename'
現在のデータベースで定義されているアプリケーション ロールの名前。 @rolenameは sysname で、既定値はありません。 @rolenameは、現在のデータベースに存在する必要があります。
[ @password = ] { encrypt N'password' }
アプリケーション ロールをアクティブ化するために必要なパスワード。 @passwordは sysname で、既定値はありません。 @passwordは、ODBC encrypt
関数を使用して難読化できます。 この関数を encrypt
使用する場合は、最初の引用符の前に配置 N
して、パスワードを Unicode 文字列に変換する必要があります。
暗号化オプションは、SqlClient を使用する接続ではサポートされていません。
重要
ODBC encrypt
関数は暗号化を提供しません。 ネットワーク経由で送信されるパスワードを保護するために、この関数に依存しないでください。 この情報がネットワーク経由で送信される場合は、TLS または IPSec を使用します。
[ @encrypt = ] { 'none' |'odbc' }
SQL Server データベース エンジンにパスワードを送信する前の暗号化の種類を指定します。 @encryptは varchar(10) で、これらの値のいずれかを指定できます。
Value | 説明 |
---|---|
none (既定値) |
難読化が使用されていないことを指定します。 パスワードは、プレーン テキストとして SQL Server に渡されます。 |
odbc |
SQL Server データベース エンジンにパスワードを送信する前に、ODBC 関数を使用してパスワードencrypt を難読化するように指定します。 この値は、ODBC クライアントまたは OLE DB Provider for SQL Server を使用している場合にのみ指定できます。 |
[ @fCreateCookie = ] { 'true' |'false' }
クッキーを作成するかどうかを指定します。 @fCreateCookieはビットで、既定値は 0
.
true
は暗黙的に に 1
変換されます。 false
は暗黙的に に 0
変換されます。
[ @cookie = ] Cookie OUTPUT
クッキーを含める出力パラメーターを指定します。 @cookieは varbinary(8000) 型の OUTPUT パラメーターです。 クッキーは、@fCreateCookietrue
の値が .
Note
現在の実装では varbinary(50) が返されますが、今後のリリースで Cookie の戻りサイズが大きくなるとアプリケーションが正常に動作し続けるために、アプリケーションは文書化された varbinary(8000) を予約する必要があります。
リターン コードの値
0
(成功) と 1
(失敗)。
解説
アプリケーション ロールを使用sp_setapprole
してアクティブ化すると、ユーザーがサーバーから切断されるか実行sp_unsetapprole
されるまで、ロールが再メインアクティブになります。 別のストアド プロシージャ、トリガー、またはユーザー定義トランザクション内では使用 sp_setapprole
できません。 直接 Transact-SQL ステートメントとしてのみ実行できます。
アプリケーション ロールの概要については、「アプリケーション ロール」を参照してください。
アプリケーション ロールを有効にする場合は、常に暗号化された接続を使用して、ネットワーク経由で送信するときにアプリケーション ロールのパスワードを保護する必要があります。
Microsoft ODBC encrypt
オプションは、SqlClient ではサポートされていません。 資格情報を格納する必要がある場合は、Crypto API 関数を使用して暗号化します。 パラメーター @password は、一方向ハッシュとして格納されます。 以前のバージョンの SQL Server との互換性を維持するために、 sp_addapprole
パスワードの複雑さのポリシーは適用されません。 パスワードの複雑さのポリシーを適用するには、CREATE APPLICATION ROLE を使用します。
アクセス許可
ロールのパブリックメンバーシップとパスワードに関する知識が必要です。
例
A. 暗号化オプションを使用せずにアプリケーション ロールをアクティブ化する
次の例では、プレーンテキスト パスワードAsDeF00MbXX
を使用して、現在のユーザーが使用するアプリケーション用に設計されたアクセス許可で作成された、という名前SalesAppRole
のアプリケーション ロールをアクティブにします。
EXEC sys.sp_setapprole 'SalesApprole', 'AsDeF00MbXX';
GO
B. Cookie を使用してアプリケーション ロールをアクティブ化し、元のコンテキストに戻す
次の例では、パスワード Sales11
が設定されているアプリケーション ロール fdsd896#gfdbfdkjgh700mM
をアクティブ化し、クッキーを作成します。 この例では、現在のユーザーの名前が返されます。その後、sp_unsetapprole
を実行して元のコンテキストに戻します。
DECLARE @cookie VARBINARY(8000);
EXEC sys.sp_setapprole 'Sales11',
'fdsd896#gfdbfdkjgh700mM',
@fCreateCookie = true,
@cookie = @cookie OUTPUT;
アプリケーション ロールがアクティブになりました。 USER_NAME()
は、アプリケーション ロール Sales11
の名前を返します。
SELECT USER_NAME();
アプリケーション ロールの設定を解除します。
EXEC sys.sp_unsetapprole @cookie;
GO
アプリケーション ロールはアクティブではなくなりました。 元のコンテキストが復元されます。 USER_NAME()
は元のユーザーの名前を返します。
SELECT USER_NAME();
GO
関連するコンテンツ
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示