You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure SQL创建含+号外部用户报错,如何转义特殊字符?

能否在Azure SQL用户创建语句中转义特殊字符?

问题场景

在Azure SQL数据库中从Azure Active Directory(AAD)创建外部数据库用户时,若主体名称包含+号,执行创建语句会触发错误,即使已确认AAD租户中该主体名称完全正确。

正常可用的创建语句

CREATE USER [Most Application Names] FROM EXTERNAL PROVIDER

含+号时报错的语句

CREATE USER [Application Name With + Sign] FROM EXTERNAL PROVIDER

错误提示

Principal 'Application Name With + Sign' could not be found or this principal type is not supported.

解决方案

针对带+等特殊字符的AAD主体,推荐以下两种可行方案:

方案1:使用AAD主体的对象ID创建(优先推荐)

通过主体的唯一对象ID创建用户,可彻底规避特殊字符的解析问题:

  1. 获取目标AAD主体的对象ID:可在Azure门户的AAD管理界面查看,或通过Azure CLI命令获取:
    az ad sp show --id "Application Name With + Sign" --query id -o tsv
    
  2. 使用对象ID执行创建语句:
    CREATE USER [替换为实际对象ID] FROM EXTERNAL PROVIDER
    
  3. (可选)为用户设置友好显示名称:
    ALTER USER [替换为实际对象ID] WITH NAME = N'Application Name With + Sign'
    

方案2:启用QUOTED_IDENTIFIER后用双引号包裹名称

通过开启SQL Server的QUOTED_IDENTIFIER设置,使用双引号包裹含特殊字符的主体名称:

SET QUOTED_IDENTIFIER ON;
CREATE USER "Application Name With + Sign" FROM EXTERNAL PROVIDER;

该方案依赖会话设置,兼容性略低于对象ID方案,仅在无法获取对象ID时使用。

内容的提问来源于stack exchange,提问作者Andrew O'Brien

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 10:42:33