Возможно ли подключиться к SQL Server LocalDB с помощью JDBC? Похоже, что (по состоянию на декабрь 2011 года) было невозможно.
Знаете ли вы об обходном пути или изменении статуса?
Возможно ли подключиться к SQL Server LocalDB с помощью JDBC? Похоже, что (по состоянию на декабрь 2011 года) было невозможно.
Знаете ли вы об обходном пути или изменении статуса?
Возможно ли подключиться к SQL Server LocalDB с помощью JDBC?
Не с драйвером JDBC от Microsoft.
Драйвер jTDS JDBC поддерживает именованные каналы.
Выполнение SqlLocalDB.exe info MyInstance предоставит вам (наряду с другой информацией) имя экземпляра экземпляра, например, "np: \.\pipe\LOCALDB # F365A78E\tsql\query".
Знаете ли вы об обходном пути или изменении статуса?
Возможные обходные пути - использование альтернативных драйверов JDBC или переход на SQL Server 2012 Express вместо LocalDB.
Детали:
Драйвер Microsoft JDBC не совместим с LocalDB.
"К сожалению, драйвер JDBC от Microsoft не поддерживает подключение к LocalDB. Это происходит из-за того, что LocalDB поддерживает только соединения Named Pipes, и наша текущая реализация JDBC не поддерживает Named Pipes. Одна из возможных задач для ваших разработчиков - загрузить и установить SQL Express, который и поддерживает его поддержку TCP/IP."
Луис Фернандо Сантос (MSFT) 06 июля 2012 г.
"К сожалению, драйвер JDBC не поддерживает LocalDB в данный момент, и нет простого решения. Команда знает об этой недостающей функции, но регистрация элемента соединения всегда полезна для отслеживания DCR и определения приоритетов".
Krzysztof Kozielczyk - MSFT 22 декабря 2011 года
"Вы используете SQL Server Express сегодня для локальной разработки? Вы работаете в Windows или другой платформе? Было бы здорово узнать больше о том, как вы хотите использовать LocalDB с вашим Java-приложением".
Да, это возможно.
Строка подключения экземпляра 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: Как упоминалось в комментарии, проблема связана с исправлением, и вы можете использовать это, чтобы исправить эту проблему. Извините, я не могу проверить это для себя.