使用integratedSecurity(Windows身份验证)通过JDBC从Linux连接到SQL Server?

时间:2015-06-18 11:25:47

标签: java sql linux sql-server-2008 jdbc

嘿,我无法使用在Linux上运行的Java代码连接到SQL Server。

如果我设置integratedSecurity=true,那么java代码将失败,并显示以下错误:

WARNING: Failed to load the sqljdbc_auth.dll cause : no sqljdbc_auth in java.library.path
com.microsoft.sqlserver.jdbc.SQLServerException: This driver is not configured for integrated authentication. ClientConnectionId:b030b480-453d-4007-8151-a552150f74cd

这是有道理的,因为Linux上没有sqljdbc.dll文件。

但如果我设置integratedSecurity=false,则会收到以下错误:

 com.microsoft.sqlserver.jdbc.SQLServerException: Login failed for user 'IT_DEV_USER'.

所以有人知道如何在integratedSecurity设置为false的情况下连接到SQL Server吗? (请注意,当integratedSecurity设置为false时,我甚至无法在Windows上运行Java代码时进行连接。)

如果没有,有什么方法可以让integratedSecurity在Linux上工作吗?

4 个答案:

答案 0 :(得分:4)

如果要使用集成安全性并使用JDBC Driver 4.0或更高版本,则在jdbc连接字符串中添加以下内容。

integratedSecurity=true;authenticationScheme=JavaKerberos

更多信息:http://blogs.msdn.com/b/psssql/archive/2015/01/09/jdbc-this-driver-is-not-configured-for-integrated-authentication.aspx

答案 1 :(得分:0)

在Linux中添加authenticationScheme=JavaKerberos对我有用,但请确保删除integratedSecurity=true,因为您没有使用Windows。

答案 2 :(得分:0)

如果您不想要集成安全性连接,请将该参数设置为false,而是在connURL中提供用户和密码,如下所示:

String connectionUrl = "jdbc:sqlserver://localhost:port;databaseName=DB_NAME;integratedSecurity=false;user=login_user;password=login_pwd;";

答案 3 :(得分:-2)

您无法使用Linux系统中的integratedSecurity功能,因为它与Windows系统绑定并使用您的Windows身份验证。但是,如果在SQL Server上同时启用SQL Server和Windows身份验证模式,则可以创建登录名,映射到相应的数据库并在Linux中使用它。

启用SQL Server身份验证:

  1. 右键单击管理工作室中的服务器
  2. 属性
  3. 安全
  4. 服务器身份验证 - > SQL Server和Windows身份验证模式