¿Hay algún error con "set chained" en setAutoCommit () en net.sourceforge.jtds.jdbc.Driver?

Estoy teniendo alguna confusión con la set chaineddeclaración en el setAutoCommit()método ennet.sourceforge.jtds.jdbc.Driver

El código fuente dice:

2161  if (serverType == Driver.SYBASE) {
2162            if (autoCommit) {
2163                sql.append("SET CHAINED OFF");
2164            } else {
2165                sql.append("SET CHAINED ON");
2166            }

Sin embargo, ¿no debería ser al revés, y el encadenamiento debería estar APAGADO para autoCommit == false?


La razón por la que me encontré con esto es la siguiente:

Estoy escribiendo una aplicación Java que necesita hacer un SQL complicado y revertirlo si alguno falla:

  • Abra la conexión Sybase usando net.sourceforge.jtds.jdbc.Driver

  • Llame a setAutoCommit (falso)

  • Hacer SQL1

  • Llame al proceso almacenado 'MySP1'

    • El procedimiento almacenado MySP1 'NO está bajo mi control

    • Tiene EXEC sp_procxmode 'dbo.MySP1','unchained'

  • Hacer SQL2

  • Si SQL2 falla, revierta todo (incluido SQL1), de lo contrario, confirme.

Una vez hecho esto, recibo el siguiente error de MySP1:

 Stored procedure 'MySP1' may be run only in unchained transaction mode. The 'SET CHAINED OFF' command will cause the current session to use unchained transaction mode.
Respuesta 1

Estoy escribiendo una pequeña aplicación en la que quiero una interfaz gráfica de usuario que divide una ventana en dos secciones, cada una de las cuales será controlada por un JPanel. Quiero agregar un campo de entrada y un conjunto de botones en ...

Estoy trabajando en un juego de disparos para el proyecto de programación de mi escuela y utilizando la detección de colisiones con actores. más tarde me di cuenta de que necesitaba usar otro método que pueda devolver a todos los actores en un área ...

He estado tratando de desplegar un artefacto automáticamente durante semanas en Bintray y sincronizarlo con Maven Central, todo dentro del sistema de construcción Travis. Pude subir a Bintray, pero la sincronización a ...

Tengo un servidor RMI ejecutándose en el host local, exportando un objeto de tipo Mensaje: intente {MessageServer obj = new MessageServer (); Trozo de mensaje = (Mensaje) UnicastRemoteObject.exportObject (obj, ...