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

请参阅

参考

CREATE APPLICATION ROLE (Transact-SQL)