为什么使用FQDN域名创建SQL Server Windows AD登录失败,短域名可正常使用?
问题原因
你的Active Directory域存在两套合法命名体系,SQL Server默认的Windows账号解析逻辑只识别短名称格式:
- NetBIOS域名:你执行成功时用的
test属于这类短域名,是AD域创建时默认生成的局域网资源识别名称,SQL Server默认会优先用该格式匹配域账号 - DNS域名(FQDN):你执行失败时用的
test.com属于这类完全合格域名,主要用于网络层级的域路由定位,默认情况下SQL Server不会将该格式的前缀识别为合法的域标识,因此无法匹配到对应域下的MyUser账号,触发找不到用户的报错。
配置方法(支持两种账号写法正常使用)
要实现两种域名前缀的写法都能正常创建登录名、正常登录,按以下步骤配置即可:
- 基础解析层配置
- 登录SQL Server所在的Windows服务器,确认
NetBIOS over TCP/IP功能已启用:进入网卡属性→Internet 协议版本4(TCP/IPv4)→属性→高级→WINS→勾选启用 NetBIOS over TCP/IP - 编辑服务器本地的lmhosts文件(路径
C:\Windows\System32\drivers\etc\lmhosts),添加如下映射记录,将DNS域名和NetBIOS域名绑定到同一域控制器:你的域控制器IP地址 test #PRE #DOM:test 你的域控制器IP地址 test.com #PRE - 配置完成后执行命令
nbtstat -R刷新NetBIOS解析缓存,执行ipconfig /flushdns刷新DNS缓存。
- 登录SQL Server所在的Windows服务器,确认
- SQL Server层配置
- 如果你可以接受用用户主体名称(UPN)格式替代
test.com\MyUser的前缀格式,直接额外创建UPN格式的登录名即可,该格式为SQL Server原生支持,用户可以任选test\MyUser或MyUser@test.com登录:CREATE LOGIN [MyUser@test.com] FROM WINDOWS WITH DEFAULT_DATABASE=[DB]; - 如果你必须要支持
test.com\MyUser的前缀写法,需要在AD域控制器的域属性中,将test.com添加为域的额外NetBIOS别名,配置完成后重启SQL Server服务即可让SQL Server识别两种域名前缀的账号格式。
- 如果你可以接受用用户主体名称(UPN)格式替代
内容的提问来源于stack exchange,提问作者managerger
相关产品推荐
相关产品推荐

