PRB: No puede iniciar una conexión clonada mientras se encuentra en modo manual de transacciones

Seleccione idioma Seleccione idioma
Id. de artículo: 313181 - Ver los productos a los que se aplica este artículo
Expandir todo | Contraer todo

En esta página

Síntomas

Al utilizar el controlador de Microsoft SQL Server 2000 para JDBC, puede experimentar la siguiente excepción:
Java.SQL.SQLException: [Microsoft] [SQL Server 2000 Driver for JDBC] no puede iniciar una conexión clonada en modo de transacción manual.

Causa

Este error se produce cuando intenta ejecutar varias instrucciones en una base de datos con el controlador JDBC en modo de transacción manual de SQL Server (AutoCommit = false) y al utilizar la directa (SelectMethod = directa) modo. Modo directo es el modo predeterminado para el controlador.

Solución

Cuando se utiliza el modo de transacción manual, debe establecer la propiedad SelectMethod del controlador en cursor, o asegúrese de que utilice sólo una instrucción activa en cada conexión según lo especificado en la sección "Más información" de este artículo.

Estado

Este comportamiento es por diseño.

Más información

Pasos para reproducir el comportamiento

Utilice el siguiente código para reproducir el error:

Nota : ver los comentarios en el código para obtener información de los cambios de código que se requieren para resolver el problema.
import java.sql.*;
import java.io.*;


public class Repro{

	public static void main(String args[])
	{
		try {
			Connection con;
			Statement s1 = null;
			ResultSet r1 = null;
			Statement s2 = null;
			ResultSet r2 = null;
			Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver"); 
			con = DriverManager.getConnection(
				"jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=pubs;SelectMethod=Direct;User=User;Password=Password");
			//fix 1
				//"jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=pubs;SelectMethod=Cursor;User=User;Password=Password");
			con.setAutoCommit(false);
			
			try {
				s1 = con.createStatement();
				r1 = s1.executeQuery("SELECT * FROM authors");
				
				//fix 2
				//r1.close();
				//s1.close();

				s2 = con.createStatement();
				r2 = s2.executeQuery("SELECT * FROM publishers");
			}
			catch (SQLException ex)
			{
				System.out.println(ex);				
			}
		
		}
		catch (Exception e)
		{
			e.printStackTrace();
		}
	}
}
				

Referencias

Para obtener más información acerca de conexiones clonada, consulte la sección Propiedades de la cadena de conexión del controlador de Microsoft SQL Server 2000 para JDBC Ayuda de HTML o la guía en pantalla del sistema.Para obtener información adicional acerca de conexiones clonadas con el controlador, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
313220PRB: Conexiones inesperadas a SQL Server con JDBC

Propiedades

Id. de artículo: 313181 - Última revisión: lunes, 30 de junio de 2003 - Versión: 2.0
La información de este artículo se refiere a:
  • Microsoft SQL Server 2000 Driver for JDBC
Palabras clave: 
kbmt kbprb KB313181 KbMtes
Traducción automática
IMPORTANTE: Este artículo ha sido traducido por un software de traducción automática de Microsoft (http://support.microsoft.com/gp/mtdetails) en lugar de un traductor humano. Microsoft le ofrece artículos traducidos por un traductor humano y artículos traducidos automáticamente para que tenga acceso en su propio idioma a todos los artículos de nuestra base de conocimientos (Knowledge Base). Sin embargo, los artículos traducidos automáticamente pueden contener errores en el vocabulario, la sintaxis o la gramática, como los que un extranjero podría cometer al hablar el idioma. Microsoft no se hace responsable de cualquier imprecisión, error o daño ocasionado por una mala traducción del contenido o como consecuencia de su utilización por nuestros clientes. Microsoft suele actualizar el software de traducción frecuentemente.
Haga clic aquí para ver el artículo original (en inglés): 313181
Renuncia a responsabilidad de los contenidos de la KB sobre productos a los que ya no se ofrece asistencia alguna
El presente artículo se escribió para productos para los que Microsoft ya no ofrece soporte técnico. Por tanto, el presente artículo se ofrece "tal cual" y no será actualizado.

Enviar comentarios

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com