次の方法で共有


sp_addapprole (Transact-SQL)

適用対象: SQL Server

アプリケーション ロールを現在のデータベースに追加します。

重要

この機能は、 SQL Serverの将来のバージョンで削除される予定です。 新規の開発作業ではこの機能を使用しないようにし、現在この機能を使用しているアプリケーションは修正することを検討してください。 代わりに CREATE APPLICATION ROLE を使用してください。

Transact-SQL 構文表記規則

構文

sp_addapprole
    [ @rolename = ] N'rolename'
    , [ @password = ] N'password'
[ ; ]

引数

[ @rolename = ] N'rolename'

新しいアプリケーション ロールの名前。 @rolenamesysname で、既定値はありません。 @rolename は有効な識別子である必要があり、現在のデータベースにまだ存在できません。

アプリケーション ロール名には、文字、記号、数字を含む最大 128 文字を含めることができます。 ロール名に円記号 (\) や NULL または空の文字列 ('') を含めることはできません。

[ @password = ] N'password'

アプリケーション ロールをアクティブ化するために必要なパスワード。 @passwordsysname で、既定値はありません。 @passwordNULLすることはできません。

リターン コードの値

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

解説

以前のバージョンの SQL Server では、ユーザー (およびロール) はスキーマと完全には区別されません。 SQL Server 2005 (9.x) 以降、スキーマはロールとは完全に異なります。 このアーキテクチャは、 CREATE APPLICATION ROLEの動作に反映されます。 このステートメントは、 sp_addapproleよりも優先されます。

以前のバージョンの SQL Server との下位互換性を維持するために、 sp_addapprole は次のチェックを行います。

  • アプリケーション ロールと同じ名前のスキーマがまだ存在しない場合は、スキーマが作成されます。 新しいスキーマはアプリケーション ロールによって所有され、アプリケーション ロールの既定のスキーマです。

  • アプリケーション ロールと同じ名前のスキーマが既に存在する場合、プロシージャは失敗します。

  • sp_addapprole では、パスワードの複雑さがチェックされません。 パスワードの複雑さは、 CREATE APPLICATION ROLEによって確認されます。

パラメーター @password は、一方向ハッシュとして格納されます。

sp_addapprole ストアド プロシージャは、ユーザー定義トランザクション内から実行することはできません。

重要

Microsoft ODBC encrypt オプションは、 SqlClient ではサポートされていません。 可能な場合は、アプリケーション ロールの資格情報の入力を求めるメッセージを実行時に表示してください。 資格情報をファイルに保存するのは避けてください。 資格情報を保持する必要がある場合は、CryptoAPI 関数を使用して暗号化します。

アクセス許可

データベースに対する ALTER ANY APPLICATION ROLE 権限が必要です。 新しいロールと同じ名前と所有者を持つスキーマがまだ存在しない場合は、データベースに対する CREATE SCHEMA 権限も必要です。

次の例では、パスワード x97898jLJfcooFUYLKm387gf3を持つ新しいアプリケーション ロール SalesAppを現在のデータベースに追加します。

EXEC sp_addapprole 'SalesApp', 'x97898jLJfcooFUYLKm387gf3';
GO