嘿,我无法使用在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上工作吗?
答案 0 :(得分:4)
如果要使用集成安全性并使用JDBC Driver 4.0或更高版本,则在jdbc连接字符串中添加以下内容。
integratedSecurity=true;authenticationScheme=JavaKerberos
答案 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身份验证: