2012-06-17 4 views
2

Я использую Windows Server 2003 на VM vare, на котором у меня есть моя база данных на MS SQL Server 2008. Теперь, когда я использовал драйвер jdbc для подключения моего java-кода к базе данных, я получаю следующее исключение. Просьба дать какое-то решение.Исключение соединения JDBC с MS SQL Server 2008

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 auth или SQL auth? Вы уверены, что можете правильно пинговать сервер, правильно ли открыты порты и т. Д.? Это когда-либо работало на этой машине, или это новая программа и ваша первая попытка подключения или что-то на компьютере, в коде или SQL Server изменилось? Почему JDBC создает такие бессмысленные и бесполезные сообщения об ошибках? –

ответ

1

Вы включили integratedSecurity. Это означает, что sqljdbc_auth.dll должен находиться на пути библиотеки jvm.

Скорее всего, у вас нет этой библиотеки на вашем пути, это неправильная версия или неправильный вариант (x86 <> x64 <> IA64).

0

Старый вопрос, но у меня был этот вопрос сегодня. Я не знаю, в первую очередь, о Java, но для меня было исправить это, чтобы скопировать драйвер JDBC от Microsoft в папку ext.

sqljdbc41.jar необходимо скопировать в C: \ [путь к установке Java] \ Java \ jre7 \ Lib \ вн \

Убедитесь, что вы выбрали правильную версию (x86 или x64).

Также для интегрированной безопасности мне нужно было сделать ссылку на auth при запуске приложения.

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

У меня было то же самое исключение при запуске SpringBatch с JdbcBatchItemWriter письма к MS SQL Server 2008.

Sqljdbc_auth.dll был на пути к библиотеке. Оказалось, что я запускал приложение SpringBatch в Eclipse с JRE 1.6. Я решил это, запустив его с помощью JRE 1.7 (Eclipse JRE-Tab в Run-Configurations).

Смежные вопросы