Доступ к SQL Server 2008 R2 через Scala / JDBC в 64-разрядной версии Windows 2008 с помощью встроенной проверки подлинности - PullRequest
0 голосов
/ 20 ноября 2011

Я пытаюсь получить доступ к SQL Server 2008, используя scala, но безуспешно.Вот мой пример кода:

Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); 
val connectionUrl = "jdbc:sqlserver://localhost:1433;databaseName=XXX;integratedSecurity=true;";
val con = DriverManager.getConnection(connectionUrl);

И вот ошибка, которую я получаю:

com.microsoft.sqlserver.jdbc.SQLServerException: Connection reset
        at com.microsoft.sqlserver.jdbc.SQLServerConnection.terminate(SQLServerConnection.java:1352)
        at com.microsoft.sqlserver.jdbc.SQLServerConnection.terminate(SQLServerConnection.java:1339)
        at com.microsoft.sqlserver.jdbc.TDSChannel.read(IOBuffer.java:1654)
        at com.microsoft.sqlserver.jdbc.TDSReader.readPacket(IOBuffer.java:3694)
        at com.microsoft.sqlserver.jdbc.TDSCommand.startResponse(IOBuffer.java:5026)
        at com.microsoft.sqlserver.jdbc.TDSCommand.startResponse(IOBuffer.java:4978)
        at com.microsoft.sqlserver.jdbc.SQLServerConnection.sendLogon(SQLServerConnection.java:2528)
        at com.microsoft.sqlserver.jdbc.SQLServerConnection.logon(SQLServerConnection.java:1905)
        at com.microsoft.sqlserver.jdbc.SQLServerConnection.access$000(SQLServerConnection.java:41)
        at com.microsoft.sqlserver.jdbc.SQLServerConnection$LogonCommand.doExecute(SQLServerConnection.java:1893)
        at com.microsoft.sqlserver.jdbc.TDSCommand.execute(IOBuffer.java:4575)
        at com.microsoft.sqlserver.jdbc.SQLServerConnection.executeCommand(SQLServerConnection.java:1400)
        at com.microsoft.sqlserver.jdbc.SQLServerConnection.connectHelper(SQLServerConnection.java:1045)
        at com.microsoft.sqlserver.jdbc.SQLServerConnection.login(SQLServerConnection.java:817)
        at com.microsoft.sqlserver.jdbc.SQLServerConnection.connect(SQLServerConnection.java:700)
        at com.microsoft.sqlserver.jdbc.SQLServerDriver.connect(SQLServerDriver.java:842)
        at java.sql.DriverManager.getConnection(Unknown Source)
        at java.sql.DriverManager.getConnection(Unknown Source)

Я понятия не имею, что происходит, и я не могу получить дальнейшую отладкувыход.Я проверил следующее:

  • Sql-сервер, разумеется, работает и может быть доступен из Management Studio или через .Net Code.
  • У меня установлена ​​64-битная Java иЯ использую 64-битный sqljdbc_auth.dll.Я попробовал (просто чтобы убедиться) 32-битную версию и получил ожидаемую ошибку, сказав мне использовать 64-битную версию.
  • Если я удалю integratedSecurity = true из строки подключения, я получаю ожидаемую аутентификациюошибка сервера SQL: сбой входа для пользователя ''.

Очевидно, что проблема заключается в встроенной аутентификации.Любой намек, как это исправить или как дальше отладить?

Ответы [ 2 ]

0 голосов
/ 01 января 2012

Я добился большего успеха, используя драйвер с открытым исходным кодом jTDS для доступа к базам данных SQL Server через JDBC (http://jtds.sourceforge.net/).

Я использовал это для подключения к экземпляру SQL Server 2008 с помощью URL-адреса этого подключения:

jdbc:jtds:sqlserver://localhost/DatabaseName;instance=InstanceName

Кажется, что мое соединение все еще работает, когда я добавляю свойство integratedSecurity=True, но это не кажется необходимым. Я считаю, что в документах jTDS говорится, что URL-адрес соединения не должен заканчиваться точкой с запятой.

Вам нужно будет добавить файл ntmlauth.dll в каталог JRE / JDK /bin. Вы также должны убедиться, что служба браузера SQL Server работает. Насколько я понимаю, это верно как для драйвера jTDS, так и для драйвера Microsoft (запустите диспетчер конфигурации SQL Server и запустите службу обозревателя SQL Server. Возможно, вы захотите настроить его на автоматический запуск при запуске).

Еще одним приятным преимуществом jTDS является то, что вы можете получить его через репозиторий Maven, если вы используете Maven:

<dependency>
    <groupId>net.sourceforge.jtds</groupId>
    <artifactId>jtds</artifactId>
    <version>1.2.4</version>
</dependency>
0 голосов
/ 20 ноября 2011

На этой странице MSDN предлагается скопировать файл или изменить путь:

Чтобы использовать встроенную аутентификацию, скопируйте файл sqljdbc_auth.dll в каталог насистемный путь Windows на компьютере, на котором установлен драйвер JDBC.

В разделе «Подключение со встроенной аутентификацией».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...