SQL Server JTDS连接问题

问题描述 投票:0回答:1

这很奇怪,我正在连接到为Windows配置了集成身份验证的sql server 2008实例。我在代码中找到了一种绕过集成身份验证的方法:

Connection con = DriverManager.getConnection( "jdbc:jtds:sqlserver://mydbserver/myDbname;useNTLMv2=true;username=$jboss;password=1234;domain=MYDOMAIN", "$jboss", "1234");

因此上面在jtds驱动程序上为name做类之后,它可以完美地工作。但是,我需要将其作为连接字符串放在配置文件中,当我更改上述内容以在getConnection上使用方法调用而不显式发送用户名时,密码参数如下所示:

 Connection con = DriverManager.getConnection( "jdbc:jtds:sqlserver://mydbserver/myDbname;useNTLMv2=true;username=$jboss;password=1234;domain=MYDOMAIN");

我得到未加载本机SSPI库的异常,因为它尝试使用Windows身份验证进行身份验证。因此,我在jts发行版中找到了dll,将ntlmauth.dll添加到了我的bin和系统类路径中,然后我得到了一个不受信任的域登录异常,该异常我可以通过在该域下执行“ RUNAS.exe”来解决,但这使我回到了必须使用我不想要的集成身份验证。

问题归结为,为什么我可以通过将用户名和密码作为参数传递给getConnection()方法来创建没有任何问题的连接,但是当我不这样做时,它将强制进行集成身份验证。如果我自己用代码创建了Connection,但是我只需要一个连接字符串放入属性文件,并且不知道如何构造一个将调用getConnection()并提供用户名,密码的连接字符串,这将不是问题。作为参数。

我讨厌这些繁琐的问题已经搜罗了谷歌,但空手而归,任何投入都会有所帮助。 -邓肯

java sql-server windows-authentication jtds
1个回答
2
投票

参数是用户,而不是用户名。那应该解决您的问题。因此,尝试:

 Connection con = DriverManager.getConnection( "jdbc:jtds:sqlserver://mydbserver/myDbname;useNTLMv2=true;user=$jboss;password=1234;domain=MYDOMAIN");
© www.soinside.com 2019 - 2024. All rights reserved.