接收SQLException连接到SQL Server 2008的“用户登录失败”
问题描述:
我试图通过Java连接到SQL Server 2008。接收SQLException连接到SQL Server 2008的“用户登录失败”
- 我已将
sqljdbc4.jar
添加到我的项目库中。 - 没有为访问数据库的数据库设置用户名和密码(Windows身份验证)。
- 1433端口在侦听,但我仍然收到此异常:
SQL异常:com.microsoft.sqlserver.jdbc.SQLServerException:用户登录失败'。 ClientConnectionId:085d5df3-ad69-49e1-ba32-b2b990c16a69
相关代码:
public class DataBases
{
private Connection link;
private java.sql.Statement stmt;
public ResultSet rs;
public DataBases()
{
try
{
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
String connectionUrl = "jdbc:sqlserver://localhost:1433;databaseName=DB;";
Connection con = DriverManager.getConnection(connectionUrl);
}
catch (SQLException e)
{
System.out.println("SQL Exception: "+ e.toString());
}
catch (ClassNotFoundException cE)
{
System.out.println("Class Not Found Exception: "+ cE.toString());
}
}
}
答
如果你想让Windows身份验证,您需要将选项integratedSecurity=true
添加到您的JDBC URL:
jdbc:sqlserver://localhost:1433;databaseName=DB;integratedSecurity=true
您还需要sqljdbc_auth.dll
(注意32/64位)在您的Windows系统路径或通过java.library.path
有关详情请参阅驾驶员手册:http://msdn.microsoft.com/en-us/library/ms378428.aspx#Connectingintegrated
答
这个帖子我的帮助: jdbc.SQLServerException: Login failed for user for any user
您需要integratedSecurity=true
标志,并确保服务器性能确实设置为安全下的“Windows身份验证模式”。
答
我在尝试从Java连接到Microsoft SQL Server时遇到了同样的问题。我用jTDS
驱动程序代替了常规的SQLJdbdc
驱动程序。
Class.forName("net.sourceforge.jtds.jdbc.Driver");
String connectionUrl = "jdbc:jtds:sqlserver://localhost:1433;databaseName=DB;integratedSecurity=true";
Connection con = DriverManager.getConnection(connectionUrl);
答
我有同样的问题。这是因为ConnectionUrl格式错误。您在ConnectionUrl中缺少用户名和密码。
String ConnectionUrl = "jdbc:sqlserver://localhost:1433;databaseName=DB","username","password");"
我希望它运作良好!!!
要下载'sqljdbc_auth.dll',请参阅[本答案](http://*.com/a/19116116/2646526)。 – heenenee 2017-03-16 17:06:14