使用JDBC连接到SQL Server LocalDB

Sri*_*ran 21 sql-server jdbc localdb

是否可以使用JDBC连接到SQL Server LocalDB? 似乎(截至2011年12月)这是不可能的.

您知道变通方法还是状态变化?

bon*_*onh 27

对的,这是可能的.

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

jdbc:jtds:sqlserver://./DatabaseName;instance=LOCALDB#88893A09;namedPipe=true
Run Code Online (Sandbox Code Playgroud)

这适用于jTDS 1.3.2.你可以在这里下载一个版本:

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

要查找所需LocalDB的命名管道,请运行

SqlLocalDb info NameOfTheLocalDBInstance
Run Code Online (Sandbox Code Playgroud)

这会给你类似的东西 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
Run Code Online (Sandbox Code Playgroud)

  • 如果我们在从sqlcmd连接后创建DATABASE SomeDB,那么我们使用:jdbc:jtds:sqlserver://./ SomeDB; instance = LOCALDB#111111; namedPipe = true; domain = MY_DOMAIN (3认同)
  • ...最后,在github上的dist zip中可以找到一个JTDS 1.3.2 jar:https://github.com/milesibastos/jTDS/releases (3认同)
  • 自此答案和 jTDS 版本 1.3.2 以来发生了什么变化,导致今天我无法使用此方法进行连接? (2认同)

Fer*_*eia 20

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

不是微软的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支持."

路易斯费尔南多桑托斯(MSFT)2012年7月6日

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

Krzysztof Kozielczyk - MSFT 2011年12月22日

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

Shamitha Reddy,用于SQL Server的Microsoft JDBC驱动程序的程序管理器,Microsoft JDBC驱动程序产品团队2012年4月13日

  • 感谢您抽出时间发帖。我曾问过我的 DBA 这个问题。他随后将其发布在 MSDN 论坛上,并得到了 Luiz Fernando Santos 的回复。与您引用的回复相同!:-) (2认同)