23

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

您知道解决方法或状态更改吗?

4

4 回答 4

32

是的,有可能。

使用 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
于 2014-06-25T14:53:38.243 回答
22

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

不使用 Microsoft 的 JDBC 驱动程序。

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) 2012 年 7 月 6 日

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

Krzysztof Kozielczyk - MSFT 2011 年 12 月 22 日

“您现在使用 SQL Server Express 进行本地开发吗?您是在 Windows 还是其他平台上工作?很高兴听到更多关于您希望如何在 Java 应用程序中使用 LocalDB 的信息。”

Shamitha Reddy,Microsoft JDBC Driver for SQL Server 项目经理,Microsoft JDBC Driver 产品团队 2012 年 4 月 13 日

于 2013-03-02T15:23:41.533 回答
0

我今天做了研究,使用 jTDS 和命名管道设置连接。

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

如前所述,localDB 不支持其他连接,但命名管道,所以到目前为止它看起来像是不可能完成的任务......

rgds

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

于 2014-07-02T12:26:43.167 回答
0

要了解 LocalDb 和实例:

  1. 在对象资源管理器中右键单击 LocalDb
  2. 选择属性
  3. 点击查看连接属性
  4. 您将获得有关本地和网络服务器详细信息的所有信息
于 2018-09-08T16:44:06.977 回答