适用于:SQL Server
Azure SQL 数据库
Azure SQL 托管实例
本文介绍如何使用 SQL Server Management Studio 或 Transact-SQL 在 SQL Server 中创建应用程序角色。 应用程序角色可限制用户通过除特定应用程序之外的其他方式访问数据库。 应用程序角色没有用户,因此选择“应用程序角色”时不会显示“角色成员”列表。
重要
当设置应用程序角色密码时,将检查密码复杂性。 调用应用程序角色的应用程序必须存储其密码。 而且应当始终以加密的形式存储应用程序角色密码。
背景
从 SQL Server 2012(11.x)开始,SQL Server 和 Azure SQL DB 使用 SHA-512 哈希与 32 位随机和唯一的盐结合使用。 此方法使攻击者无法推断密码。
SQL Server 2025 (17.x) 引入了迭代哈希算法,RFC2898也称为 基于密码的密钥派生函数 (PBKDF)。 此算法仍使用 SHA-512,但多次对密码进行哈希处理(100,000 次迭代),显著减缓了暴力攻击的速度。 此更改增强了密码保护,以应对不断变化的安全威胁,并帮助客户遵守 NIST SP 800-63b 指南。 此安全增强功能使用更强大的哈希算法,这可能会稍微增加 SQL 身份验证登录的登录时间。 在连接池的环境中,影响通常较低,但在没有池的情况下或在登录延迟受到密切监视的情况下,这种影响可能更明显。
使用 SQL Server Management Studio
在“对象资源管理器”中,展开要创建应用程序角色的数据库。
展开 “安全性” 文件夹。
展开 “角色” 文件夹。
右键单击“应用程序角色”文件夹,然后选择“新建应用程序角色…”。
在“常规”页的“应用程序角色 - 新建”对话框中,在“角色名称”框中输入新的应用程序角色的新名称。
在 “默认架构” 框中,通过输入对象名称指定将拥有此角色创建的对象的架构。 或者,选择省略号 (...) 以打开 “查找架构 ”对话框。
在 “密码” 框中,输入新角色的密码。 在“确认密码”框中再次输入该密码。
在 “此角色拥有的架构”,选择或查看此角色将拥有的架构。 架构只能由一个架构或角色拥有。
选择“确定”。
其他选项
“应用程序角色 - 新建”对话框还在两个其他页上提供了选项:和“扩展属性”。
“安全对象” 页将列出所有可能的安全对象以及可授予登录名的针对这些安全对象的权限。
“扩展属性”页允许您向数据库用户添加自定义属性。
使用 transact-SQL
在 “对象资源管理器” 中,连接到 数据库引擎的实例。
在标准栏上,选择“新建查询” 。
将以下示例复制并粘贴到查询窗口中,然后选择 执行。 此代码创建名为具有密码的应用程序角色
weekly_receipts,并将其Sales作为其默认架构。 替换为<password>强密码。-- CREATE APPLICATION ROLE weekly_receipts WITH PASSWORD = '<password>' , DEFAULT_SCHEMA = Sales; GO
权限
需要对数据库拥有 ALTER ANY APPLICATION ROLE 权限。