2012-06-27 34 views
7

Imは MS SQL ServerおよびJDBCは:JavaコードからMS SQL Server 2008に接続している間の接続

I/O Error: DB server closed connection.

を取得して閉じました。


SQLサーバーが混在モードであり、そのローカルmachine.My接続文字列には、スタックトレースが

java.sql.SQLException: I/O Error: DB server closed connection. at net.sourceforge.jtds.jdbc.TdsCore.nextToken(TdsCore.java:2311) at net.sourceforge.jtds.jdbc.TdsCore.login(TdsCore.java:610) at net.sourceforge.jtds.jdbc.ConnectionJDBC2.(ConnectionJDBC2.java:345) at net.sourceforge.jtds.jdbc.ConnectionJDBC3.(ConnectionJDBC3.java:50) at net.sourceforge.jtds.jdbc.Driver.connect(Driver.java:184) at java.sql.DriverManager.getConnection(Unknown Source) at java.sql.DriverManager.getConnection(Unknown Source) at com.app.hibernate.test.(test.java:22) at com.app.hibernate.test.main(test.java:53) Caused by: java.io.IOException: DB server closed connection. at net.sourceforge.jtds.jdbc.SharedSocket.readPacket(SharedSocket.java:848) at net.sourceforge.jtds.jdbc.SharedSocket.getNetPacket(SharedSocket.java:727) at net.sourceforge.jtds.jdbc.ResponseStream.getPacket(ResponseStream.java:466) at net.sourceforge.jtds.jdbc.ResponseStream.read(ResponseStream.java:103) at net.sourceforge.jtds.jdbc.TdsCore.nextToken(TdsCore.java:2206) ... 8 more Exception in thread "main" java.lang.NullPointerException at com.app.hibernate.test.db(test.java:36) at com.app.hibernate.test.main(test.java:54)

JDBCドライバである

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


のjTDSです

String url ="jdbc:sqlserver://machine:1433;instance=SQLEXPRESS;databaseName=db";

スタックトレース

com.microsoft.sqlserver.jdbc.SQLServerException: Login failed for user 'username'. at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDatabaseError(SQLServerException.java:156) at com.microsoft.sqlserver.jdbc.TDSTokenHandler.onEOF(tdsparser.java:240) at com.microsoft.sqlserver.jdbc.TDSParser.parse(tdsparser.java:78) at com.microsoft.sqlserver.jdbc.SQLServerConnection.sendLogon(SQLServerConnection.java:2636) at com.microsoft.sqlserver.jdbc.SQLServerConnection.logon(SQLServerConnection.java:2046) at com.microsoft.sqlserver.jdbc.SQLServerConnection.access$000(SQLServerConnection.java:41) at com.microsoft.sqlserver.jdbc.SQLServerConnection$LogonCommand.doExecute(SQLServerConnection.java:2034) at com.microsoft.sqlserver.jdbc.TDSCommand.execute(IOBuffer.java:4003) at com.microsoft.sqlserver.jdbc.SQLServerConnection.executeCommand(SQLServerConnection.java:1550) at com.microsoft.sqlserver.jdbc.SQLServerConnection.connectHelper(SQLServerConnection.java:1207) at com.microsoft.sqlserver.jdbc.SQLServerConnection.loginWithoutFailover(SQLServerConnection.java:1054) at com.microsoft.sqlserver.jdbc.SQLServerConnection.connect(SQLServerConnection.java:758) at com.microsoft.sqlserver.jdbc.SQLServerDriver.connect(SQLServerDriver.java:842) at java.sql.DriverManager.getConnection(Unknown Source) at java.sql.DriverManager.getConnection(Unknown Source) at com.app.hibernate.test.(test.java:22) at com.app.hibernate.test.main(test.java:53) Exception in thread "main" java.lang.NullPointerException at com.app.hibernate.test.db(test.java:36) at com.app.hibernate.test.main(test.java:54)

+1

ここにスタックトレースを貼り付けることができますか? –

+1

がサーバー構成の問題である可能性があります。 – hovanessyan

+0

質問 – Mukthi

答えて

2

あなたの接続文字列での問題を抱えている

のjTDSについては

JDBC:JTDS:のSQLServer://マシン名:1433; databaseNameの= DB; useNTLMv2 = TRU E;ドメイン=ワークグループ

あなたはNTLMが機能するために必要なシングルサインオンライブラリのhttp://jtds.sourceforge.net/faq.html#windowsAuthを読むことができます。 SQLServer://マシン:JDBCドライバ

JDBC使用しているときにjdtsのために供給される

"IntegratedSecurity機能= true" が有効です。インスタンス= SQLEXPRESS; databaseNameの=デシベル1433; integratedSecurity = true

+0

URLを使用していましたが、SQL Serverのドライブで**使用していました**ログインで要求されたデータベース "DB"を開くことができません。ログインが失敗しました** jtds ** USENTLMV2接続プロパティが無効です** – Mukthi

+0

im設定** useNTLMv2 = false **同じログインに失敗しました。 – Mukthi

+0

しかし、私はDBのシステムテーブルにアクセスすることができます – Mukthi

0

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

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

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

アプリケーションがWindowsマシンで実行されていて、ログに記録されたユーザーの資格情報を使用する場合は、domainパラメータをuseNTLMv2の有無にかかわらず指定できます。

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

3

接続文字列と認証にエラーがあります。ジャナカ-PC SQLユーザー名:SA SQLパスワード
:1234データベース:Janak_DBそれが混在モードである場合は、この

PC名を試してみてください

SQL認証を使用していませんJDBC

内のSQL Conncetionため

コード

Class.forName( "com.microsoft.sqlserver.jdbc.SQLServerDriver");
接続conn = DriverManager.getConnection( "jdbc:sqlserver:// janaka-PC;ユーザー= sa;パスワード= 1234;データベース= Janak_DB");

関連する問題