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 必须是有效的标识符,当前数据库中尚不存在。

应用程序角色名称可以包含 1 到 128 个字符,包括字母、符号及数字。 角色名称不能包含反斜杠(\)也不能是 NULL 空字符串(')。

[ @password = ] N'password'

激活应用程序角色所需的密码。 @password为 sysname,无默认值。 @password不能NULL

返回代码值

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无法从用户定义的事务中执行存储过程。

重要

SqlClient 不支持Microsoft ODBC encrypt 选项。 如果您可以,请在运行时提示用户输入应用程序角色凭据。 不要将凭据存储在一个文件中。 如果必须使凭据持久化,请使用 CryptoAPI 函数将它们加密。

权限

需要对数据库具有 ALTER ANY APPLICATION ROLE 权限。 如果具有与新角色相同的名称和所有者的架构尚不存在,则还需要对数据库具有 CREATE SCHEMA 权限。

示例

以下示例将具有密码x97898jLJfcooFUYLKm387gf3的新应用程序角色SalesApp添加到当前数据库。

EXEC sp_addapprole 'SalesApp', 'x97898jLJfcooFUYLKm387gf3';
GO