sqlserverdriver sqlserver puede otro microsoft example error equipo desde datos conectarse conectar ala java sql-server jdbc

java - sqlserver - no se puede conectar a local sql server 2012



La conexión JDBC se bloquea sin respuesta de SQL Server 2008 r2 (3)

Cuando me conecto a SQL Server 2008 (express localmente, servidor completo en producción) esto funciona bien para mí cuando desarrollo en mi máquina local, pero esto solo se detiene en producción.

Aquí está el código:

package oata; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import sun.applet.Main; public class Sql { public static final String SQLDRIVER = "com.microsoft.sqlserver.jdbc.SQLServerDriver"; protected Connection conn = null; private String ip = ""; private int port = 0; private String databaseName = ""; private String db_userid = ""; private String db_password = ""; public void callDb(String[] args) throws InstantiationException, IllegalAccessException, ClassNotFoundException, SQLException{ System.out.println("Initialising variables"); ip = args[0]; port = Integer.parseInt(args[1]); databaseName = args[2]; db_userid = args[3]; db_password = args[4]; try{ Log logger = LogFactory.getLog(Main.class); System.out.println("Opening logger..."); logger.debug("opening driver " + SQLDRIVER); System.out.println("Creating connection instance..."); Class.forName(SQLDRIVER).newInstance(); System.out.println("Driver Manager.getConnection..."); conn = DriverManager.getConnection(getDBURL(), db_userid, db_password); System.out.println("Connection prepare statement..."); PreparedStatement ps = conn.prepareStatement("select * from nstupersonal"); System.out.println("Executing query..."); ResultSet rs = ps.executeQuery(); while(rs.next()){ System.out.println(rs.getString("StudentId")); } }catch(Exception e){ System.out.println(e.getMessage()); } conn.close(); } private String getDBURL(){ String url = ""; try { url = "jdbc:sqlserver://" + ip +":" + port +";databaseName="+ databaseName + ";user=" + db_userid + ";password="+db_password; } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } return url; } }

Ese es el código que se ejecuta. En la consola, literalmente, solo se cuelga en producción. Siempre parece depender de SQL Server 2008 pero funciona bien en producción para todos mis otros clientes. Funciona similmente con ...

TCP / IP está habilitado en 1433 en SQL Server y permite que las conexiones remotas se establezcan en verdadero en la consola de administración.

java -jar ipaddress port dbname usuario contraseña

¿Algunas ideas? Es el controlador SQL incorrecto? Estoy usando sqljdbc4.jar

El símbolo del sistema resultante es ...

Inicializando variables Abriendo logger ... Driver Manager.getConnection ...

No se arroja ninguna excepción

Gracias,

re


Puede tomar una instantánea de los rastros de la pila de hilos y ver dónde se atasca. Si está en lectura de socket, algo está mal en db (creo que este sería el caso aquí).


Si la producción se está ejecutando en Java 6 Update 29, entonces actualice a Java 6 Update 30 o baje de categoría a Java 6 update 27 (?). La actualización 29 contiene un error donde SSL no funciona correctamente y se cuelga la conexión a SQL Server.


Encontré el mismo comportamiento con el controlador MS SQL Server 2012 + JDBC 4.0 y una vez más, el problema fue la actualización 29 de JDK 6.0. La conexión colgó en la primera llamada a executeQuery () o incluso con setAutoCommit (falso) antes de que se emitiera cualquier consulta. Después de actualizar a la actualización 37 de JDK, todo funciona bien.

HTH, Michal