ALTER APPLICATION ROLE (Transact-SQL)

适用于:SQL ServerAzure SQL 数据库Azure SQL 托管实例

更改应用程序角色的名称、密码或默认架构。

Transact-SQL 语法约定

语法

ALTER APPLICATION ROLE application_role_name
    WITH <set_item> [ , ...n ]

<set_item> ::=
    NAME = new_application_role_name
    | PASSWORD = 'password'
    | DEFAULT_SCHEMA = schema_name

参数

application_role_name

要修改的应用程序角色的名称。

NAME = new_application_role_name

指定应用程序角色的新名称。 该名称一定不能被用于引用数据库中任何主体。

PASSWORD = 'password'

指定应用程序角色的密码。 password 必须满足运行 SQL Server 实例的计算机的 Windows 密码策略要求。 应始终使用强密码。

DEFAULT_SCHEMA = schema_name

指定服务器在解析对象名时将搜索的第一个架构。 schema_name 可以是数据库中不存在的架构。

备注

如果数据库中已存在新的应用程序角色名称,则语句将失败。 更改应用程序角色的名称、密码或默认架构时,不会更改与该角色关联的 ID。

重要

密码过期策略不适用于应用程序角色密码。 为此,选择强密码时要格外谨慎。 调用应用程序角色的应用程序必须存储其密码。

应用程序角色在 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 指南。

权限

需要对数据库具有 ALTER ANY APPLICATION ROLE 权限。 若要更改默认架构,用户还需要对应用程序角色有 ALTER 权限。 应用程序角色可以修改其自身的默认架构,但不能修改其名称或密码。

示例

答: 更改应用程序角色的名称

以下示例将应用程序角色 weekly_receipts 的名称更改为 receipts_ledger

USE AdventureWorks2022;
CREATE APPLICATION ROLE weekly_receipts
    WITH PASSWORD = '987Gbv8$76sPYY5m23' ,
    DEFAULT_SCHEMA = Sales;
GO
ALTER APPLICATION ROLE weekly_receipts
    WITH NAME = receipts_ledger;
GO

B. 更改应用程序角色的密码

以下示例将更改应用程序角色 receipts_ledger 的密码。

ALTER APPLICATION ROLE receipts_ledger
    WITH PASSWORD = '897yUUbv867y$200nk2i';
GO

C. 更改名称、密码和默认架构

以下示例将同时更改应用程序角色 receipts_ledger 的名称、密码和默认架构。

ALTER APPLICATION ROLE receipts_ledger
    WITH NAME = weekly_ledger,
    PASSWORD = '897yUUbv77bsrEE00nk2i',
    DEFAULT_SCHEMA = Production;
GO