Можно ли подключиться к SQL Server LocalDB с помощью JDBC? Это кажется, что (по состоянию на декабрь 2011 г.) это было невозможно.
Знаете ли вы обходной путь или изменение статуса?
Можно ли подключиться к SQL Server LocalDB с помощью JDBC? Это кажется, что (по состоянию на декабрь 2011 г.) это было невозможно.
Знаете ли вы обходной путь или изменение статуса?
Можно ли подключиться к SQL Server LocalDB с помощью JDBC?
Не с драйвером JDBC от Microsoft.
Драйвер JDBC jTDS поддерживает именованные каналы.
Выполнение SqlLocalDB.exe info MyInstance предоставит вам (вместе с другой информацией) имя канала экземпляра, например «np:\.\pipe\LOCALDB#F365A78E\tsql\query».
Знаете ли вы обходной путь или изменение статуса?
Возможные обходные пути: использование альтернативных драйверов JDBC или переход на SQL Server 2012 Express вместо Локальная БД.
Подробности:
Драйвер Microsoft JDBC несовместим с LocalDB.
«К сожалению, драйвер Microsoft JDBC не поддерживает подключение к LocalDB. Это происходит потому, что LocalDB поддерживает только соединения с именованными каналами, а наша текущая реализация JDBC не поддерживает именованные каналы. Одним из возможных обходных путей для ваших разработчиков является загрузка и установка SQL Express, который и включите его поддержку TCP/IP».
Луис Фернандо Сантос (MSFT), 6 июля 2012 г. < /а>
«К сожалению, на данный момент драйвер JDBC не поддерживает LocalDB, и нет простого обходного пути. Команда знает об этой отсутствующей функции, но регистрация элемента подключения всегда полезна для отслеживания и определения приоритетов DCR».
Кшиштоф Козельчик - 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
Чтобы найти именованный канал для нужной локальной базы данных, запустите
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 и именованных каналов.
Состояние на сегодняшний день: НЕВОЗМОЖНО! Невозможно создать строку подключения к локальной базе данных с помощью jTDS из-за ограничений имени канала. См. открытый вопрос здесь: http://sourceforge.net/p/jtds/bugs/716/
Как уже упоминалось, localDB не поддерживает другое соединение, кроме namedPipes, поэтому пока это выглядит как невозможная миссия...
с уважением
Редактировать: Как упоминалось в комментарии, в проблеме, указанной выше, есть исправление, и вы можете использовать его для решения проблемы. Извините, я не могу проверить это на себе.
Чтобы узнать LocalDb и экземпляр: