Windows 10通过Windows身份验证连接SQL Server 2022 Express失败求助
问题分析与解决方案
核心原因
工作组环境无域控制器,Windows身份验证依赖NTLM协议,需两端机器存在用户名+密码完全一致的本地用户,同时SQL Server需为该用户分配登录权限;此外旧版OLE DB驱动对SQL Server 2022的NTLM兼容性可能存在问题。
具体解决步骤
1. 同步两台机器的本地用户信息
工作组中Windows身份验证用本地用户身份访问SQL Server,因此Win10当前登录用户必须在Win11机器上存在完全相同的用户名和密码,且该用户需属于Win11本地管理员组(或至少拥有SQL Server登录权限)。
- 操作:在Win11上创建与Win10登录用户同名的本地用户并设置相同密码;或在Win10上切换为Win11已存在的本地用户登录。
2. 配置SQL Server的Windows登录权限
确认Win11上的目标本地用户(或所属组)已被添加到SQL Server登录列表,并授予数据库访问权限。
- 操作:
- 在Win11上打开SQL Server Management Studio(SSMS),连接本地SQL Server。
- 展开安全性 > 登录名,查看是否存在格式为
WIN11机器名\用户名的登录项。 - 若不存在,右键点击“登录名”选择“新建登录名”,在“常规”选项卡选“Windows身份验证”,输入
WIN11机器名\用户名;切换到“用户映射”选项卡,勾选需要访问的数据库并分配对应权限(如db_datareader、db_datawriter)。
3. 更新Windows 10的OLE DB驱动
旧版Microsoft OLE DB Provider for SQL Server(DBNETLIB)对SQL Server 2022的NTLM支持可能存在兼容性问题,需更新至最新驱动:
- 操作:
- 在Win10的“控制面板-程序和功能”中卸载旧版OLE DB驱动。
- 安装
Microsoft OLE DB Driver for SQL Server最新版本,之后在UDL文件中选择该新驱动重新测试连接。
4. 统一NTLM协议设置
确保两台机器的NTLM版本一致,优先使用NTLMv2:
- 操作:
- 按Win+R输入
gpedit.msc打开组策略编辑器(Win10/Win11均需操作)。 - 导航至计算机配置 > Windows设置 > 安全设置 > 本地策略 > 安全选项。
- 将“网络安全: LAN管理器身份验证级别”设为“发送NTLMv2响应\拒绝LM & NTLM”。
- 将“网络安全: NTLMv2会话响应”设为“已启用”。
- 按Win+R输入
5. 检查NetBIOS与SMB服务状态
工作组依赖NetBIOS识别机器名、SMB完成身份验证协商,需确保相关服务正常运行:
- 操作:
- 按Win+R输入
services.msc,在Win10和Win11上分别确认“Server”、“Workstation”、“TCP/IP NetBIOS Helper”服务已启动且设置为自动。 - 确保两台机器防火墙允许SMB(端口445)和SQL Server端口(默认1433,Express可能为动态端口,可在SQL Server配置管理器中查看)的入站/出站连接。
- 按Win+R输入
6. 用IP地址替代机器名测试
若机器名解析异常导致验证失败,可在UDL文件中输入Win11机器的IP地址作为服务器名称,再尝试Windows身份验证。
验证操作
完成上述步骤后,重新创建UDL文件,选择更新后的OLE DB驱动,使用Windows身份验证尝试展开数据库列表并测试连接。
内容的提问来源于stack exchange,提问作者lscshj
相关产品推荐
相关产品推荐

