Подключение к локальной базе данных SQL Server с помощью JDBC

можно ли подключиться к локальной базе данных SQL Server с помощью JDBC? получается, что (по состоянию на декабрь 2011 года) это было невозможно.

знаете ли вы об обходном пути или изменении статуса?

4 ответов


можно ли подключиться к локальной базе данных SQL Server с помощью JDBC?

не с драйвером JDBC Microsoft.

на jTDS драйвер JDBC поддерживает именованные каналы.

Выполнение SqlLocalDB.exe info MyInstance предоставит вам (вместе с другой информацией) имя канала экземпляра, такое как "np:\.\pipe\LOCALDB#F365A78E\tsql\query".

знаете ли вы об обходном пути или изменении статуса?

возможно обходные пути используют альтернативные драйверы JDBC или переключаются на SQL Server 2012 Express вместо LocalDB.

детали:

драйвер Microsoft JDBC несовместим с LocalDB.

" к сожалению, драйвер Microsoft JDBC не поддерживает подключение к LocalDB. Это происходит потому, что LocalDB поддерживает только именованные соединения каналов, а наша текущая реализация JDBC не поддерживает именованные каналы. Одним из возможных работ вокруг для ваших разработчиков, чтобы загрузить и установить SQL Express, который и включить его поддержку TCP/IP."

Луис Фернандо Сантос (MSFT) 06 июля 2012

" к сожалению, драйвер JDBC не поддерживает LocalDB в данный момент, и нет простого обходного пути. Команда знает об этой отсутствующей функции, но подача элемента подключения всегда полезна для отслеживания и приоритизации DCR."

Кшиштоф Kozielczyk - во вторник, 22 декабря

" используете ли вы SQL Server Express сегодня для локальной разработки? Вы работаете на Windows или другой платформе? Было бы здорово услышать больше о том, как вы хотели бы использовать LocalDB с вашим Java-приложением."

Шамита Редди, менеджер программ Microsoft JDBC Driver for SQL Server, Microsoft JDBC Driver Product Team 13 Apr 2012


Да, это возможно.

строка подключения для экземпляра LocalDB с помощью jTDS выглядит следующим образом:

jdbc:jtds:sqlserver://./DatabaseName;instance=LOCALDB#88893A09;namedPipe=true

это работает с jTDS 1.3.2. Скачать релиз можно здесь:

https://github.com/milesibastos/jTDS/releases/download/v1.3.2/jtds-1.3.2-dist.zip

чтобы найти именованный канал для нужного LocalDB, запустите

SqlLocalDb info NameOfTheLocalDBInstance

, который даст вам что-то вроде np:\.\pipe\LOCALDB#88893A09\tsql\query

это вероятно, лучше всего подключиться к определенному имени пользователя / паролю, поэтому создайте логин и пользователя для своей базы данных в этом экземпляре LocalDB (если вы еще этого не сделали):

sqlcmd -S np:\.\pipe\LOCALDB#88893A09\tsql\query

CREATE LOGIN dbuser WITH PASSWORD = 'dbpassword'
GO
CREATE USER dbuser
GO
ALTER AUTHORIZATION ON DATABASE::DatabaseName TO dbuser
GO

сегодня я провел исследование, чтобы настроить соединение с помощью jTDS и именованных каналов.

состояние на сегодня:невозможно! Невозможно построить строку подключения к localDB с помощью jTDS из-за ограничений имени канала. См. открытый выпуск здесь:http://sourceforge.net/p/jtds/bugs/716/

Как уже упоминалось localDB не поддерживает другие соединения, но namedPipes, так что это выглядит как Миссия невыполнима так далеко...

rgds

Edit: Как упоминалось в комментарии, есть патч в проблеме, связанной выше, и вы можете использовать это для устранения проблемы. Извините, я не могу проверить это для себя.


Чтобы Узнать LocalDb И Экземпляр:

  1. щелкните правой кнопкой мыши на LocalDb в Обозревателе объектов
  2. Выберите Свойства
  3. нажмите на просмотр свойств подключения
  4. вы получите всю информацию о местных и вебсервер детали