Databricks通过JDBC连接Azure SQL DB认证及语法错误求助
问题解答
1. "EUII Hidden"的含义及解决方法
含义
EUII 是End-User Identifiable Information(终端用户可识别信息)的缩写。当你使用不含域名的短用户名(比如test2)进行Azure AD密码认证时,Azure AD无法确定对应的租户,会将用户可识别信息模糊隐藏,返回"EUII Hidden"。错误AADSTS50034说明这个无域名的账户在目标Azure AD租户中不存在。
解决方法
必须使用**完整的用户主体名称(UPN)**作为DBUser,格式为用户名@域名,比如你后来尝试的test@keyxxxx.co.uk。
2. 未设置强制首次修改却出现密码过期提示的原因及解决
原因
- Azure AD默认密码有效期为90天,若该账户创建时间超过90天,即使创建时未勾选强制修改,也会触发过期;
- 账户继承了租户级别的密码生命周期策略,组织可能配置了统一的密码过期规则;
- 若该账户是从本地AD同步至Azure AD的,本地AD的密码策略会同步生效,可能导致密码过期。
解决方法
- 在Azure AD门户中重置该用户密码,勾选用户下次登录时无需更改密码;
- 检查Azure AD租户的密码策略,按需调整密码有效期(需具备租户管理员权限);
- 若为同步账户,检查本地AD的密码设置,确保同步规则符合需求。
3. "Incorrect syntax near '<'"语法错误的解决
原因
该错误是SQL语法非法导致的,通常和table变量的取值有关:
table变量未正确赋值,包含占位符(比如<table_name>这类未替换的模板字符);- 表名未指定Schema(比如应写
dbo.target_table而非target_table); - 表名包含特殊字符/空格,未用方括号包裹。
解决方法
- 打印输出
table变量的值,确认它是合法的SQL表名; - 若表名包含特殊字符或空格,用方括号包裹,比如
[dbo].[My Target Table]; - 确保
table变量已替换为实际目标表名,无残留的模板占位符。
内容的提问来源于stack exchange,提问作者Patterson
相关产品推荐
相关产品推荐

