WebSphere数据源SQL Server Windows认证连接失败求助
解决工作组环境下WebSphere通过Windows认证连接SQL Server的登录失败问题
你遇到的NT AUTHORITY\ANONYMOUS LOGON登录失败错误,在工作组(非域)环境下很常见——因为没有域控制器做身份信任转发,WebSphere默认的服务账户无法跨机器完成Windows认证。结合你已经做的操作,下面是针对性的解决方案:
1. 确保sqljdbc_auth.dll的位数与WebSphere JVM匹配
你已经将dll放到了${WAS_INSTALL_ROOT}/java/bin,但必须保证:
- WebSphere JVM的位数(32/64位)和sqljdbc_auth.dll的位数完全一致(SQL Server JDBC驱动包中包含x86和x64两个版本的dll)
- 可以通过WebSphere控制台查看JVM位数,或者直接检查
java/bin目录下java.exe的位数
2. 修改WebSphere服务的运行账户
工作组环境下,WebSphere默认的Local System账户无法跨机器进行Windows认证,需要将服务登录账户改为SQL Server机器上拥有数据库访问权限的本地账户:
- 打开Windows服务管理器(
services.msc),找到WebSphere对应的服务(如IBM WebSphere Application Server - WIN-KLGMU5KFTR2Node01) - 右键选择「属性」→「登录」标签页,选择「此账户」,输入SQL Server机器的账户(格式:
WIN-MDP5BJ0RCA3\administrator)和对应密码 - 重启WebSphere服务,使配置生效
3. 调整JDBC与J2C配置
- 保留JDBC URL中的
integratedSecurity=true,但清空J2C认证数据中的用户ID和密码——此时认证会使用WebSphere服务的运行账户,手动填写账户反而会导致冲突 - 再次确认JDBC URL的服务器地址、端口、数据库名称拼写无误:
jdbc:sqlserver://mbaastest31.konylabs.net:1433;databasename=konyadmindb2805181519;integratedSecurity=true;
4. 验证SQL Server的Windows认证设置
登录SQL Server机器,打开SQL Server Management Studio检查:
- 实例是否启用了混合认证模式(右键实例→「属性」→「安全性」→选择「SQL Server和Windows身份验证模式」)
- 你指定的WebSphere服务账户(
WIN-MDP5BJ0RCA3\administrator)是否在SQL Server中拥有登录权限,并且已映射到目标数据库konyadmindb2805181519,分配了足够的访问权限(如db_datareader、db_datawriter)
5. 额外提示:工作组环境的账户一致性
如果WebSphere机器和SQL Server机器的本地账户有相同的用户名和密码,Windows认证的成功率会更高——因为工作组没有域信任,只能通过匹配的账户密码建立身份验证。
完成以上步骤后,再次测试数据源连接,应该可以解决匿名登录失败的问题。
内容的提问来源于stack exchange,提问作者kusumat
相关产品推荐
相关产品推荐

