9

私は得ています

I/O エラー: DB サーバーが接続を閉じました。

JavaコードからMS SQLサーバー2008に接続中。


SQLサーバーは混合モードで、ローカルマシンにあります。私の接続文字列は jTDSです

jdbc:jtds:sqlserver://machineName:1433;databaseName=DB;integratedSecurity=true


スタックトレースは

java.sql.SQLException: I/O エラー: DB サーバーが接続を閉じました。net.sourceforge.jtds.jdbc.TdsCore.nextToken(TdsCore.java:2311) で net.sourceforge.jtds.jdbc.TdsCore.login(TdsCore.java:610) で net.sourceforge.jtds.jdbc.ConnectionJDBC2.( ConnectionJDBC2.java:345) で net.sourceforge.jtds.jdbc.ConnectionJDBC3.(ConnectionJDBC3.java:50) で net.sourceforge.jtds.jdbc.Driver.connect(Driver.java:184) で java.sql.DriverManager で。 com.app.hibernate.test.(test.java:22) の java.sql.DriverManager.getConnection(不明なソース) の getConnection(不明なソース) com.app.hibernate.test.main(test.java:53) の原因: java.io.IOException: DB サーバーが接続を閉じました。net.sourceforge.jtds.jdbc.SharedSocket.readPacket (SharedSocket.java:848) で、net.sourceforge.jtds.jdbc.SharedSocket で。

JDBC ドライバー

文字列 url ="jdbc:sqlserver://machine:1433;instance=SQLEXPRESS;databaseName=db";

スタックトレース

com.microsoft.sqlserver.jdbc.SQLServerException: ユーザー 'username' のログインに失敗しました。com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDatabaseError (SQLServerException.java:156) で com.microsoft.sqlserver.jdbc.TDSTokenHandler.onEOF (tdsparser.java:240) で com.microsoft.sqlserver.jdbc.TDSParser.parse (tdsparser.java:78) com.microsoft.sqlserver.jdbc.SQLServerConnection.sendLogon(SQLServerConnection.java:2636) で com.microsoft.sqlserver.jdbc.SQLServerConnection.logon(SQLServerConnection.java:2046) で com.microsoft. sqlserver.jdbc.SQLServerConnection.access$000(SQLServerConnection.java:41) com.microsoft.sqlserver.jdbc.SQLServerConnection$LogonCommand.doExecute(SQLServerConnection.java:2034) com.microsoft.sqlserver.jdbc.TDSCommand.execute(IOBuffer) .java:4003) com.microsoft で。

4

3 に答える 3

4

接続文字列と認証にエラーがあります。混合モードの場合はSQL 認証を使用しないでください

これを試して

PC 名 : janaka-pc SQL ユーザー名: sa SQL パスワード
: 1234データベース : Janak_DB

JDBC での SQL Conncetion のコード

Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
接続 conn = DriverManager.getConnection("jdbc:sqlserver://janaka-PC;user=sa;password=1234;database=Janak_DB");

于 2015-03-05T02:28:30.393 に答える
2

接続文字列に問題がある

jTDS の場合:

jdbc:jtds:sqlserver://machineName:1433;databaseName=DB; useNTLMv2=true;ドメイン=ワークグループ

NTLM が機能するために必要なシングル サインオン ライブラリについては、http://jtds.sourceforge.net/faq.html#windowsAuthを参照してください。

jdts に指定した「integratedSecurity=true」は、JDBC ドライバーを使用する場合に有効です

jdbc:sqlserver://machine:1433;instance=SQLEXPRESS;databaseName=db; 統合セキュリティ=true

于 2012-07-01T21:20:25.813 に答える
0

MS SQL 側で認証エラーが発生しました。

接続を取得する方法を制御できない場合 (つまり、データソースまたは接続プールを使用している場合)、接続 URL には、次のように使用するログインとパスワードを含める必要があります。

jdbc:sqlserver://machine:1433;instance=SQLEXPRESS;databaseName=db;user=USERNAME;password=PASSWORD";

アプリケーションが Windows マシンで実行されていて、ログインしたユーザーの資格情報を使用する場合は、domainパラメーターを指定してもしなくてもかまいませんuseNTLMv2

最後に、Windows マシンを使用しているがドメインに対してユーザーを認証する場合は、ユーザー名、パスワード、およびドメイン パラメーターを指定する必要があります。jtds FAQ、特にURL 形式セクションですべてを読むことができます。

于 2012-07-01T21:44:37.293 に答える