2012-07-05 159 views
19

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

您是否知道解決方法或狀態更改?

+0

Habe教程的外觀如何從基於IntelliJ的IDE中執行https://blog.jetbrains.com/datagrip/2016/10/07/connecting-datagrip-to-sql-server-express-localdb/ – moscas 2017-12-07 16:19:48

回答

14

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

不適用於Microsoft的JDBC驅動程序。

jTDS JDBC驅動程序支持命名管道。

執行SqlLocalDB.exe信息MyInstance將爲您(連同其他信息)獲取實例管道名稱,如「np:\。\ pipe \ LOCALDB#F365A78E \ tsql \ query」。

您知道解決方法或狀態更改嗎?

可能的解決方法是使用替代JDBC驅動程序或切換到SQL Server 2012 Express而不是LocalDB。

詳情:

微軟的JDBC驅動程序是不兼容的LocalDB。

「不幸的是,Microsoft JDBC Driver不支持連接到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或其他平臺上工作?這將是偉大聽到更多有關你想如何使用的LocalDB您的Java應用程序。 「

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

+1

感謝您抽出時間發帖。我曾問過我的DBA這個問題。他反過來在MSDN論壇上提出了這個問題,並得到了Luiz Fernando Santos的回覆。你已經引用了同樣的回覆! :-) – 2013-03-02 19:54:56

+0

不夠公平。我用可能的解決方法補充了答案。 – 2013-03-03 17:16:46

17

是的,這是可能的。

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

這些都是很好的說明,但是我必須從連接字符串中刪除數據庫名稱(因爲我們使用master數據庫)並使用我的網絡憑據:jdbc:jtds:sqlserver://./; instance = LOCALDB# 111111; namedPipe = true; domain = MY_DOMAIN – 2015-09-21 13:57:36

+3

如果我們在sqlcmd連接後創建DATABASE SomeDB,那麼我們使用:jdbc:jtds:sqlserver://./SomeDB; instance = LOCALDB#111111; namedPipe = true; domain = MY_DOMAIN – 2015-09-21 13:58:14

+2

...最後,一個JTDS 1.3.2 jar可以在github上的dist zip中找到:https://github.com/milesibastos/jTDS/releases – 2015-09-21 15:07:56

0

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

今天的狀態是:不可能! 由於管道名稱限制,無法使用jTDS將連接字符串構建到localDB。見懸而未決的問題在這裏:http://sourceforge.net/p/jtds/bugs/716/

如前所述的LocalDB不支持其他的連接,但了NamedPipes,所以它看起來像不可能完成的任務那麼遠,

RGDS

編輯: 如前所述在評論中有上面鏈接的補丁,你可以用它來解決這個問題。對不起,我無法檢查我自己。

+0

我剛剛獲得了bonh的回答。所以至少可以獲得連接。 – 2015-08-19 19:04:05

+1

您鏈接的錯誤附有一個修補程序,據稱修復了這個限制。 – twm 2015-12-14 19:18:47

+1

我剛試過這個補丁,它對我很有用。 – twm 2015-12-14 19:46:59