2012-06-27 51 views
7

Im que consigueMS SQL Server y JDBC: cerrado conexión

I/O Error: DB server closed connection.

mientras se conecta al servidor de MS SQL 2008 del código de Java.


servidor SQL está en modo mixto y su cadena de conexión en machine.My local es jTDS

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


seguimiento de la pila es

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)

controlador JDBC

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

StackTrace

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

¿Puedes pegar stacktrace aquí? –

+1

podría ser un problema de configuración del servidor ... – hovanessyan

+0

agregué el stacktrace con la pregunta – Mukthi

Respuesta

2

tiene problemas en sus cadenas de conexión

Para jTDS:

JDBC: jTDS: sqlserver: // machineName: 1433; de databaseName = DB; useNTLMv2 = tru e; domain = grupo de trabajo

Usted puede leer http://jtds.sourceforge.net/faq.html#windowsAuth para la biblioteca Single-Sign-On requerido para NTLM funcione.

"IntegratedSecurity = true" que ha proporcionado para jdts es válida cuando se utiliza el controlador JDBC

jdbc: sqlserver: // máquina: 1433; instancia = SQLEXPRESS; de databaseName = db; integratedSecurity = true

+0

Utilicé tanto la URL como mientras estaba en la unidad del servidor SQL ** No se puede abrir la base de datos "DB" solicitada por el inicio de sesión. Falló el inicio de sesión. ** Mientras jtds ** La propiedad de conexión USENTLMV2 no es válida. ** – Mukthi

+0

Si configuro im ** useNTLMv2 = falso ** ellos reciben el mismo error de inicio de sesión fallido. – Mukthi

+0

Pero puedo acceder a las tablas del sistema en DB – Mukthi

0

Tiene un error de autenticación en el lado de MS SQL.

Si usted no está en control de cómo Adquirir la conexión (es decir, está utilizando un origen de datos o una agrupación de conexiones), la dirección URL de conexión debe contener el nombre de usuario y contraseña que se utilizará, como:

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

Si la aplicación se ejecuta en un equipo con Windows y desea utilizar las credenciales del usuario registrado, puede especificar el parámetro domain con o sin useNTLMv2.

Finalmente, si está en una máquina con Windows pero desea autenticar al usuario contra un dominio, debe proporcionar el nombre de usuario, la contraseña y los parámetros del dominio. Puede leerlo al respecto en el jtds FAQ, especialmente en la sección URL Format.

3

La cadena de conexión y la autenticación tienen errores.si es el modo de mezcla no utilice la autenticación de SQL

Prueba este

PC Nombre : Janaka-pc SQL Nombre de Usuario : sa SQL contraseña
: 1234 base de datos : Janak_DB

Código de Conncetion SQL en JDBC

Class.forName ("com.microsoft.sqlserver.jdbc.SQLServerDriver");
Conexión conn = DriverManager.getConnection ("jdbc: sqlserver: // janaka-PC; usuario = sa; contraseña = 1234; base de datos = Janak_DB");

Cuestiones relacionadas