2012-11-08 123 views
0

这是奇怪的,我连接到SQL Server 2008中集成了配置为使用Windows身份验证实例。我发现了一种通过在代码中这样做是为了绕过集成验证它:SQL服务器JTDS连接问题

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

做的类名的JTDS驱动程序后,它的作品完美。但是,我需要把这个作为一个连接字符串在配置文件中,当我切换到使用上的getConnection方法调用上面没有用户名明确地发送,密码PARAMS这样的:

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()方法PARAMS的用户名和密码,没有任何问题连接,但是当我不迫使集成身份验证。这不会是一个问题,如果我自己在代码中创建连接,但我需要一个连接字符串来放入我的属性文件,并不知道如何构建连接字符串,将调用getConnection()并提供用户名,密码作为参数。

我讨厌这些繁琐的问题,用Google搜索,但都拿出了两手空空,任何输入会有所帮助。 - 邓肯

回答

2

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

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

对上!谢谢你帮我解决这个问题。 –