sp_addapprole (Transact-SQL)
向当前数据库中添加应用程序角色。
重要提示 |
---|
后续版本的 Microsoft SQL Server 将删除该功能。请避免在新的开发工作中使用该功能,并着手修改当前还在使用该功能的应用程序。 则使用 CREATE APPLICATION ROLE。 |
语法
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