我得到了
从Java代码连接到MS SQL Server 2008时I / O错误:数据库服务器已关闭连接。
。
SQL服务器处于混合模式,它位于本地机器中。我的连接字符串是 jTDS
JDBC:JTDS:SQLSERVER://机器:1433;的databaseName = DB; integratedSecurity =真
堆栈跟踪
java.sql.SQLException:I / O错误:数据库服务器已关闭连接。 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) 在com.app.hibernate.test。(test.java:22) 在com.app.hibernate.test.main(test.java:53) 引起:java.io.IOException:DB服务器关闭连接。 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个 线程“main”java.lang.NullPointerException中的异常 在com.app.hibernate.test.db(test.java:36) 在com.app.hibernate.test.main(test.java:54)
JDBC驱动程序
String url =“jdbc:sqlserver:// machine:1433; instance = SQLEXPRESS; databaseName = db”;
栈跟踪
com.microsoft.sqlserver.jdbc.SQLServerException:用户'username'登录失败。 at 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.sqlserver.jdbc.SQLServerConnection.executeCommand(SQLServerConnection.java:1550) 在com.microsoft.sqlserver.jdbc.SQLServerConnection.connectHelper(SQLServerConnection.java:1207) 在com.microsoft.sqlserver.jdbc.SQLServerConnection.loginWithoutFailover(SQLServerConnection.java:1054) 在com.microsoft.sqlserver.jdbc.SQLServerConnection.connect(SQLServerConnection.java:758) 在com.microsoft.sqlserver.jdbc.SQLServerDriver.connect(SQLServerDriver.java:842) at java.sql.DriverManager.getConnection(Unknown Source) at java.sql.DriverManager.getConnection(Unknown Source) 在com.app.hibernate.test。(test.java:22) 在com.app.hibernate.test.main(test.java:53) 线程“main”java.lang.NullPointerException中的异常 在com.app.hibernate.test.db(test.java:36) 在com.app.hibernate.test.main(test.java:54)
答案 0 :(得分:3)
您的连接字符串和身份验证有错误。如果是混合模式,请不要使用 SQL身份验证
试试这个
PC名称:janaka-pc SQL用户名:sa SQL密码
:1234 数据库:Janak_DB
JDBC中的sql Conncetion代码
的Class.forName(#34&; com.microsoft.sqlserver.jdbc.SQLServerDriver&#34);
Connection conn = DriverManager.getConnection(" jdbc:sqlserver:// janaka-PC; user = sa; password = 1234; database = Janak_DB");
答案 1 :(得分:2)
您的连接字符串存在问题
对于jTDS:
jdbc:jtds:sqlserver:// machineName:1433; databaseName = DB; useNTLMv2 = tru e; domain = workgroup
您可以阅读http://jtds.sourceforge.net/faq.html#windowsAuth以获取所需的单点登录库,以便NTLM正常工作。
使用JDBC驱动程序时,为jdts提供的“integratedSecurity = true”是有效的
JDBC:SQLSERVER://机:1433;实例= SQLEXPRESS;的databaseName =分贝;的 integratedSecurity =真强>
答案 2 :(得分:0)
您在MS SQL端遇到身份验证错误。
如果您无法控制如何获取连接(即,您使用的是数据源或连接池),则连接URL必须包含要使用的登录名和密码,例如:
jdbc:sqlserver://machine:1433;instance=SQLEXPRESS;databaseName=db;user=USERNAME;password=PASSWORD";
如果应用程序在Windows计算机上运行,并且您希望使用已记录用户的凭据,则可以使用或不使用domain
指定useNTLMv2
参数。
最后,如果您在Windows计算机上但想要针对域对用户进行身份验证,则必须提供用户名,密码和域参数。您可以在jtds FAQ,特别是URL Format部分阅读所有相关信息。