适用于:SQL Server
Azure SQL 数据库
Azure SQL 托管实例
向当前数据库中添加应用程序角色。
语法
CREATE APPLICATION ROLE application_role_name
WITH PASSWORD = 'password' [ , DEFAULT_SCHEMA = schema_name ]
参数
application_role_name
指定应用程序角色的名称。 该名称一定不能被用于引用数据库中任何主体。
PASSWORD = 'password'
指定数据库用户将用于激活应用程序角色的密码。 应始终使用强密码。
password 必须满足运行 SQL Server 实例的计算机的 Windows 密码策略要求。
DEFAULT_SCHEMA = schema_name
指定服务器在解析该角色的对象名时将搜索的第一个架构。 如果未定义DEFAULT_SCHEMA,则应用程序角色将用作 dbo 其默认架构。
schema_name 可以是数据库中不存在的架构。
备注
重要
当设置应用程序角色密码时,将检查密码复杂性。 调用应用程序角色的应用程序必须存储其密码。 而且应当始终以加密的形式存储应用程序角色密码。
在 sys.database_principals 目录视图中可以查看应用程序角色。
有关如何使用应用程序角色的信息,请参阅应用程序角色。
注释
架构不等同于数据库用户。 使用 系统目录视图 标识数据库用户和架构之间的任何差异。
从 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 身份验证登录的登录时间。 在连接池的环境中,影响通常较低,但在没有池的情况下或登录延迟受到密切监视的情况可能更明显。
权限
需要对数据库具有 ALTER ANY APPLICATION ROLE 权限。
示例
以下示例创建名为 weekly_receipts 的应用程序角色,该角色使用密码 987Gbv876sPYY5m23 和 Sales 作为其默认架构。
CREATE APPLICATION ROLE weekly_receipts
WITH PASSWORD = '987G^bv876sPY)Y5m23'
, DEFAULT_SCHEMA = Sales;
GO