2012-06-17 73 views
2

我在使用MS SQL Server 2008上的数据库的VM vare上使用Windows Server 2003。现在,当我使用jdbc驱动程序将我的java代码连接到数据库时,我收到以下异常。请提供一些解决方案。使用MS SQL Server 2008的JDBC连接异常

Exception in thread "main" java.lang.UnsatisfiedLinkError: com.microsoft.sqlserver.jdbc.AuthenticationJNI.SNISecGenClientContext([B[I[BI[B[I[ZLjava/lang/String;ILjava/lang/String;Ljava/lang/String;Ljava/util/logging/Logger;)I 
    at com.microsoft.sqlserver.jdbc.AuthenticationJNI.SNISecGenClientContext(Native Method) 
    at com.microsoft.sqlserver.jdbc.AuthenticationJNI.GenerateClientContext(AuthenticationJNI.java:80) 
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.sendLogon(SQLServerConnection.java:2691) 
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.logon(SQLServerConnection.java:2234) 
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.access$000(SQLServerConnection.java:41) 
    at com.microsoft.sqlserver.jdbc.SQLServerConnection$LogonCommand.doExecute(SQLServerConnection.java:2220) 
    at com.microsoft.sqlserver.jdbc.TDSCommand.execute(IOBuffer.java:5696) 
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.executeCommand(SQLServerConnection.java:1715) 
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.connectHelper(SQLServerConnection.java:1326) 
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.login(SQLServerConnection.java:991) 
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.connect(SQLServerConnection.java:827) 
    at com.microsoft.sqlserver.jdbc.SQLServerDriver.connect(SQLServerDriver.java:1012) 
    at java.sql.DriverManager.getConnection(Unknown Source) 
    at java.sql.DriverManager.getConnection(Unknown Source) 
    at test.jdbcdemo.main(jdbcdemo.java:24) 
+0

相关:http://stackoverflow.com/q/175055/738746 –

+0

哪个JDBC驱动程序以及您使用的连接URL? –

+1

你能显示你的连接字符串吗? SQL Server与Java代码在同一台机器上吗?它是一个命名实例还是一个默认实例?你确定服务正在运行吗?您是否使用Windows身份验证或SQL身份验证?您确定可以正确ping通服务器,正确的端口是否打开等?这有没有在这台机器上工作,或者这是一个新的程序,并且你第一次尝试连接,或者机器,代码或SQL Server上有什么改变?为什么JDBC产生这样毫无意义和无用的错误消息? –

回答

1

您已启用integratedSecurity。这意味着sqljdbc_auth.dll需要位于jvm的库路径上。

很有可能您的路径中没有此库,它是错误的版本或错误的变体(x86 <> x64 <> IA64)。

0

一个古老的问题,但我今天有这个问题。我不知道关于Java的第一件事,但对我来说,修复方法是将Microsoft的JDBC驱动程序复制到Java的ext文件夹中。

sqljdbc41.jar需要被复制到C:\的Java \ jre7 \ LIB \分机\

\ [java的安装路径]确保你选择正确的版本(x86或x64)。

同样对于集成安全性,我需要在启动我的应用程序时参考auth。

-Djava.library.path=C:\[Path to Microsoft JDBC Driver 4.1 for SQLServer]\sqljdbc_4.1\enu\auth\x86 
0

我与JdbcBatchItemWriter写入MS SQL Server 2008的

Sqljdbc_auth.dll是库路径上开始SpringBatch时有同样的例外。事实证明,我使用JRE 1.6在Eclipse中运行SpringBatch应用程序。我通过运行JRE 1.7(Eclipse JRE-Tab in Run-Configurations)来解决这个问题。