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 存储过程。

安全说明安全说明

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

权限

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

示例

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

EXEC sp_addapprole 'SalesApp', 'x97898jLJfcooFUYLKm387gf3' ;
GO