Подключение к локальной базе данных 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-приложением."
Да, это возможно.
строка подключения для экземпляра 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 И Экземпляр:
- щелкните правой кнопкой мыши на LocalDb в Обозревателе объектов
- Выберите Свойства
- нажмите на просмотр свойств подключения
- вы получите всю информацию о местных и вебсервер детали