web-dev-qa-db-ja.com

jTDS接続文字列:バックスラッシュを使用してMS SQL Serverインスタンスに接続します

JavaアプリケーションでjTDSドライバを使用しています。データベース管理者は、SQL Serverインスタンス名は

MSSQL-DB09v1\v1

接続URLはどのように記述すればよいですか?

私は次のようなものを使用しています

jdbc:jtds:sqlserver://server-name/database_name 

しばらくの間、それはうまく機能しますが、インスタンス名にバックスラッシュが含まれている場合、正しい接続文字列がわかりません。

11
curious1

さらなる調査とテストを行いました。この場合の正しい接続URL文字列は次のとおりです。

jdbc:jtds:sqlserver://server-name/database_name;instance=instance_name

私の場合、接続文字列は次のとおりです。

jdbc:jtds:sqlserver://server-name/MSSQL-DB09v1;instance=v1

詳細は jTDSFAQs を参照してください

25
curious1

同様のケースで、DBAは次の接続を使用してサーバー上のデータベースを提供しました:{SERVER_NAME}\{INSTANCE}。この構文は、SSMSを使用してサーバーとインスタンスに接続するときに機能しましたが、Javaドライバーを介して接続するときに機能しませんでした。

代わりに、次の構文でうまくいきました。

jdbc:jtds:sqlserver://{SERVER_NAME};databaseName={DATABASE_NAME);instance={INSTANCE}

インスタンスを接続文字列パラメーターに移動する必要があることに注意してください。これを実行すると、すべてがうまくいきました。

参考として、 この特定のJTDS FAQ を参照してください。

5
Pflugs

-データベースは「dbo」スキーマで実行されます。

-したがって、dboスキーマがクエリを処理する方法でクエリを実行するための接続を確立する必要があります(getConnection()関数を使用している場合)。

-接続文字列のサーバー名の前にデータベースの名前を追加することでそれを行うことができます。以下のように

ConnectionUrl="jdbc:jtds:sqlserver://**yourservername:1433/yourdatabase**;database=yourdatabse;user=username;password=password;encrypt=false;trustServerCertificate=false;hostNameInCertificate=*.database.windows.net;loginTimeout=30;";

の代わりに

ConnectionUrl="jdbc:jtds:sqlserver://**yourservername:1433**;database=yourdatabse;user=username;password=password;encrypt=false;trustServerCertificate=false;hostNameInCertificate=*.database.windows.net;loginTimeout=30;";

0
sharat kanthi