sqljdbc4 microsoft for java sql-server jdbc jtds

java - microsoft - sql server jdbc 7



diferencias entre los controladores jdbc de ms sql microsoft y el controlador jTDS (5)

La razón clave para usar jTDS es que usa la licencia GPL menor, donde el controlador de Microsoft usa su propia licencia, que tiene muchas más restricciones. Una restricción a tener en cuenta es que no puede

  • Trabajar alrededor de cualquier limitación técnica en el software.

Hay más restricciones dentro de la licencia, tales como:

  • Transferir el software o este acuerdo a cualquier tercero.
  • utilizar el software para servicios de alojamiento de software comercial

Lo que podría interpretarse como que no puede usarlo en el código de producción, sin embargo, puntos anteriores en la licencia parecen permitirlo.

Habiendo dicho todo esto, no conozco las licencias dentro de SQL Server, lo que puede o no restringir los controladores de terceros como jTDS que se conectan a él.

Otro punto es que jTDS está disponible a través de maven, el controlador de Microsoft no lo está.

<dependency> <groupId>net.sourceforge.jtds</groupId <artifactId>jtds</artifactId> <version>1.3.1</version> </dependency>

Para mi elección, usar jTDS, es más permisivo y es menos probable que te meta en problemas, y; es un mejor conductor

¿Cuáles son las diferencias entre cada conductor? Quiero decir, además de que uno de ellos es de código abierto.

¿Cuáles son los pros / contras de cada uno?

¿Cuál recomendarías?

Aquí está la propia opinión de jTDS sobre el tema: http://jtds.sourceforge.net/


Mientras que durante muchos años, jTDS fue muy superior al controlador de MSsql con errores, las cosas están cambiando a lo contrario recientemente.

Aquí está qoute de https://confluence.atlassian.com/bitbucketserver/transitioning-from-jtds-to-microsoft-s-jdbc-driver-776640388.html :

¿Por qué cambiar controladores?

Las versiones recientes de Hibernate, que Bitbucket Server utiliza para simplificar su capa de persistencia, han introducido el requisito de que los controladores JDBC y los grupos de conexión utilizados sean compatibles con JDBC4. JDBC4 fue introducido con Java 6.

El controlador jTDS utilizado por las versiones anteriores a Bitbucket Server 2.1 es un controlador JDBC3, compatible con Java 1.3 y, por lo tanto, no se puede usar con versiones más recientes de Hibernate. Mientras que jTDS 1.3.0 y 1.3.1 dicen implementar JDBC4 y JDBC4.1, en realidad no lo hacen. Los nuevos métodos se han "implementado", pero sus implementaciones son todas nuevas, AbstractMethodError (), lo que significa que realmente no se pueden usar. (Vea un ejemplo aquí, en GitHub .)

Dado que jTDS 1.3.1 no proporciona una implementación de JDBC4 que funcione, se tomó la decisión de reemplazar jTDS con el controlador de SQL Server de Microsoft. El controlador de Microsoft se mantiene activamente, donde jTDS no se ha actualizado desde 2014 (y antes de la pequeña ronda de actualizaciones realizada en 2014, no se había actualizado durante varios años). Microsoft ofrece un controlador completo JDBC4.2 (Java 8) y es compatible con todas las características de SQL Server, incluido SQL Server 2016.


Son distintas implementaciones. El controlador jTDS es un tipo 4 y, en mi experiencia, tiene un mejor rendimiento. He estado usando el controlador jTDS en un entorno de producción sin ningún problema durante 5 años.

Yo recomendaría ir con jTDS.


Una diferencia relevante es que la implementación JDBC 4.0 del controlador JTDS (v1.3.1) requiere al menos Java 7, mientras que la implementación JDBC 4.0 del controlador de Microsoft está disponible en Java 6.

Esto es importante si desea utilizar Hibernate 4.3 (basándose en la API de JDBC 4.0) y es compatible con Java 6. En ese caso, JTDS no es una opción.


jTDSperformance es bueno, pero parece que la propiedad de conmutación por error no es compatible con jTDS, si el Servidor SQL cambia a secundario, es necesario reiniciar la aplicación / servidor para seleccionar la nueva IP y restablecer la conexión.