使用JDBC连接到SQL Server LocalDB

时间:2012-07-05 13:49:50

标签: sql-server jdbc localdb

是否可以使用JDBC连接到SQL Server LocalDB? It appears that(截至2011年12月)这是不可能的。

您是否知道变通方法或状态发生变化?

4 个答案:

答案 0 :(得分:24)

是的,这是可能的。

使用jTDS的LocalDB实例的连接字符串如下所示:

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

答案 1 :(得分:19)

是否可以使用JDBC连接到SQL Server LocalDB?

不使用Microsoft的JDBC驱动程序。

jTDS JDBC驱动程序支持命名管道。

执行SqlLocalDB.exe信息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支持。“

Luiz Fernando Santos (MSFT) July 06, 2012

“不幸的是,JDBC驱动程序此时并不支持LocalDB,并且没有简单的解决方法。团队知道这个缺失的功能,但是提交连接项对于DCR跟踪和优先级排序总是有用的。”

Krzysztof Kozielczyk - MSFT 22 Dec 2011

“你今天使用SQL Server Express进行本地开发吗?你在Windows或其他平台上工作吗?很高兴听到你想如何在你的Java应用程序中使用LocalDB。”

Shamitha Reddy, Program Manager Microsoft JDBC Driver for SQL Server, Microsoft JDBC Driver Product Team 13 Apr 2012

答案 2 :(得分:0)

我今天做了我的研究,使用jTDS和命名管道建立连接。

今天的状态是:不可能! 由于管道名称的限制,无法使用jTDS构建连接字符串到localDB。请参阅此处的未解决问题:http://sourceforge.net/p/jtds/bugs/716/

正如前面提到的,localDB不支持其他连接而是namedPipes,所以到目前为止它看起来像 mission impossible ...

RGDS

修改 正如在评论中提到的,上面链接的问题有补丁,您可以使用它来解决问题。对不起,我不能自己检查一下。

答案 3 :(得分:0)

要了解LocalDb和实例:

  1. 在对象资源管理器中右键单击LocalDb
  2. 选择属性
  3. 单击视图连接属性
  4. 您将获得有关本地和网络服务器详细信息的所有信息