我试图在IntelliJ中运行一个小测试程序。代码:
String driverClass = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
String url = "jdbc:sqlserver://test.test.com;integratedSecurity=true";
String userName = "test";
String password = "test";
Class.forName(driverClass);
try (Connection con = DriverManager.getConnection(url, userName, password);
Statement st1 = con.createStatement();
Statement st2 = con.createStatement();
) {
String sql1 = "EXEC [dbo].[Cleanup]";
String sql2 = "EXEC [dbo].[DetailsALL] \"DetailsALL.csv\" ";
st1.execute(sql1);
st2.execute(sql2);
}catch(Exception e){
System.out.println(e.getMessage());
}我在VM选项中添加了以下内容:
-Djava.library.path="\Users\sgupta\IdeaProjects\todos\sqljdbc_4.0\enu\auth\x86\“

运行该程序将导致:
2013年4月5日下午5:43:20 com.microsoft.sqlserver.jdbc.AuthenticationJNI警告:未能加载sqljdbc_auth.dll原因: java.library.path中没有sqljdbc_auth此驱动程序未配置为集成身份验证。ClientConnectionId:db8a3aa3-d84b-49d2-a7eb-64c4187a8303
我已经双重检查了我在VM选项中指定的路径。还有其他建议吗?谢谢。
发布于 2013-05-07 00:08:45
看来我有个坏消息要告诉你。这直接来自于.tar.gz文件中包含的sqljdbc文档。打开文件后,转到以下帮助网页: sqljdbc_4.0/enu/ help /default.htm
在使用JDBC驱动程序连接到Server的内容( >>> )下构建连接URL,转到“连接到集成身份验证”部分:
在本节的底部有下面的引号,它基本上说您不能在非windows系统中使用dll方法。
当驱动程序在非Windows操作系统上运行时,JDBC驱动程序不支持集成身份验证。在从非Windows操作系统连接到Server时,驱动程序也不提供任何功能来提供Windows身份验证凭据(如用户名和密码)。在这种情况下,应用程序必须使用Server身份验证。
但是,这个相同的帮助文件的msdn文档似乎表明,对于所有非windows操作系统,您可以让它与Kerberos一起工作。http://msdn.microsoft.com/en-us/library/ms378428.aspx
这个msdn链接概述了Kerberos过程,但是它没有详细设置非windows机器。http://msdn.microsoft.com/en-us/library/gg558122.aspx
如果有人知道了让Kerberos从非windows机器连接到Server的详细信息,我很想听听他们的意见。
https://stackoverflow.com/questions/15844875
复制相似问题