首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JDBC / IntelliJ未能加载sqljdbc_auth.dll

JDBC / IntelliJ未能加载sqljdbc_auth.dll
EN

Stack Overflow用户
提问于 2013-04-05 22:48:54
回答 1查看 6K关注 0票数 3

我试图在IntelliJ中运行一个小测试程序。代码:

代码语言:javascript
复制
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选项中指定的路径。还有其他建议吗?谢谢。

EN

回答 1

Stack Overflow用户

发布于 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的详细信息,我很想听听他们的意见。

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15844875

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档