2012-06-27 3 views
7

MS SQL Server 및 JDBC는 : 자바 코드에서 MS SQL 서버 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 : // MACHINENAME : 1433; 여기서 databaseName = DB; useNTLMv2 = 트루 전자, 도메인 = 작업 그룹

당신은 NTLM을 사용하기 위해서는 필요한 싱글 사인온 라이브러리 http://jtds.sourceforge.net/faq.html#windowsAuth을 읽을 수 있습니다. SQLSERVER : // 기계 : JDBC 드라이버

JDBC를 사용할 때 jdts을 위해 공급 된

"에서 integratedSecurity = 진정한는"유효, 예를 = SQLEXPRESS; 여기서 databaseName = DB 1433; integratedSecurity = true

+0

SQL 서버 드라이브에서 URL을 모두 사용했지만 ** 로그인으로 요청한 데이터베이스 "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 컴퓨터에서 실행되고 로그 된 사용자의 자격 증명을 사용하려는 경우 useNTLMv2의 유무에 관계없이 domain 매개 변수를 지정할 수 있습니다.

마지막으로, Windows 시스템에 있지만 도메인에 대해 사용자를 인증하려는 경우 사용자 이름, 암호 및 도메인 매개 변수를 제공해야합니다. jtds FAQ, 특히 URL Format 섹션에서이 모든 내용을 읽을 수 있습니다.

3

연결 문자열 및 인증에 오류가 있습니다.janaka-PC SQL 사용자 이름 : SA SQL 암호
: 1234 데이터베이스 : 그것을 사용하지 않는 혼합 모드 인 경우 SQL 인증

PC 이름 을 시도 Janak_DB을

JDBC에서의 SQL Conncetion에 대한

코드

Class.forName ("com.microsoft.sqlserver.jdbc.SQLServerDriver");
연결 conn = DriverManager.getConnection ("jdbc : sqlserver : // janaka-PC; user = sa; 암호 = 1234; database = Janak_DB");

관련 문제