JDBCを使用してSQLServer LocalDBに接続することは可能ですか? どうやら (2011年12月現在)それは不可能でした。
回避策またはステータスの変更を知っていますか?
JDBCを使用してSQL Server LocalDBに接続することは可能ですか?
MicrosoftのJDBCドライバーではありません。
jTDS JDBCドライバーは名前付きパイプをサポートします。
SqlLocalDB.exe情報を実行すると、MyInstanceは、「np:\。\ pipe\LOCALDB#F365A78E\tsql\query」などのインスタンスパイプ名を(他の情報とともに)取得します。
回避策またはステータスの変更を知っていますか?
考えられる回避策は、代替のJDBCドライバーを使用するか、LocalDBの代わりに SQL Server 2012 Express に切り替えることです。
詳細:
Microsoft JDBCDriverはLocalDBと互換性がありません。
「残念ながら、Microsoft JDBC DriverはLocalDBへの接続をサポートしていません。これは、LocalDBが名前付きパイプ接続のみをサポートし、現在のJDBC実装が名前付きパイプをサポートしていないために発生します。開発者にとって考えられる回避策の1つは、SQLExpressをダウンロードしてインストールすることです。 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、SQLServer用MicrosoftJDBCドライバープログラムマネージャー、Microsoft JDBCドライバー製品チーム2012年4月13日
はい、可能です。
JTDSを使用したLocalDBインスタンスの接続文字列は次のようになります。
jdbc:jtds:sqlserver://./DatabaseName;instance=LOCALDB#88893A09;namedPipe=true
これは、jTDS1.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
LocalDbとインスタンスを知るには:
今日は、jTDSと名前付きパイプを使用して接続を設定するための調査を行いました。
今日の状態は次のとおりです。IMPOSSIBLE!パイプ名の制限により、jTDSを使用してlocalDBへの接続文字列を作成することはできません。ここで未解決の問題を参照してください: http://sourceforge.net/p/jtds/bugs/716/
前述のように、localDBは他の接続をサポートしていませんが、namedPipesをサポートしているため、これまでのところミッションインポッシブルのように見えます...
rgds
編集:コメントで述べたように、上記のリンク先に問題のパッチがあり、これを使用して問題を修正できます。申し訳ありませんが、これを自分で確認することはできません。