我已经多次看到这个问题,但我尝试过的所有答案都没有对我有用。 Connection字符串看起来像这样
url = "jdbc:jtds:sqlserver://server1/dbname;user=user;password=pswd"; //this one works fine
url = "jdbc:jtds:sqlserver://server1;dbname;databaseName=dbname;integratedSecurity=true"; //doesn't work
但是我得到了例外。
java.io.IOException: SSO Failed: Native SSPI library not loaded. Check the java.library.path system property.
我有jtds 1.2,我将ntlmauth.dll复制到我的lib文件夹,并在eclipse上添加了jtd-1.2.jar的Native库位置的路径,但没有任何改变。
还尝试将-Djava.library.path =。/ lib添加到我的运行配置中。我正在使用jre 1.7和Eclipse Helios运行RCP应用程序
答案 0 :(得分:0)
我通过使用Microsfot JDBC驱动程序使我的程序工作。从他们的网站下载
https://www.microsoft.com/en-us/download/details.aspx?id=11774
并从连接字符串中删除了jtds
url = "jdbc:jtds:sqlserver://server1;dbname;databaseName=dbname;integratedSecurity=true";
答案 1 :(得分:0)
我遇到了同样的问题。
通常我会做这样的事情,这很好用:
myConnection = DriverManager.getConnection(dbConnection, "username", "pasword");
但是当试图从这样的方法中获取用户名和密码时:
myConnection = DriverManager.getConnection(dbConnection, getUser(), getPassword());
我得到了同样的错误。事实证明,getUser()
正在返回null
,这似乎使SQL Server尝试使用Windows身份验证登录,但未在该计算机上设置。因此,确保getUser()
不是null
会产生差异。