繁体   English   中英

使用JDBC连接到SQL Server LocalDB

[英]Connecting to SQL Server LocalDB using JDBC

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

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

对的,这是可能的。

使用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

是否可以使用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)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日

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

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

如前所述,localDB不支持其他连接,而是命名为Pipes,因此到目前为止似乎无法完成任务 ...

rgds

编辑:如评论中所述,上面有链接的补丁程序,您可以使用它来解决问题。 抱歉,我无法自己检查。

要知道LocalDb和实例:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM