sp_addapprole (Transact-SQL)

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

重要な注意事項重要

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

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

構文

sp_addapprole [ @rolename = ] 'role' , [ @password = ] 'password'

引数

  • [ @rolename = ] 'role'
    新しいアプリケーション ロールの名前を指定します。role のデータ型は sysname で、既定値はありません。role には、現在のデータベース内に存在しない、有効な識別子を指定します。

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

  • [ @password = ] 'password'
    アプリケーション ロールをアクティブにするために必要なパスワードを指定します。password のデータ型は sysname で、既定値はありません。password は NULL にはできません。

戻り値

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

説明

以前のバージョンの SQL Server では、ユーザー (およびロール) はスキーマと完全には区別されていません。SQL Server 2005 以降では、スキーマはロールとは完全に区別されています。この新しいアーキテクチャは 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 権限も必要です。

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

EXEC sp_addapprole 'SalesApp', 'x97898jLJfcooFUYLKm387gf3' ;
GO