PROBLEMA: Não é possível iniciar uma ligação clonada enquanto em modo de transacções manual

Traduções de Artigos Traduções de Artigos
Artigo: 313181 - Ver produtos para os quais este artigo se aplica.
Expandir tudo | Reduzir tudo

Nesta página

Sintomas

Ao utilizar o controlador de Microsoft SQL Server 2000 para JDBC, poderá detectar a seguinte excepção:
Java.SQL.SQLException: [Microsoft] [controlador de 2000 SQLServer para JDBC] não é possível iniciar uma ligação clonada no modo de transacção manual.

Causa

Este erro ocorre quando tenta executar várias instruções uma base de dados do SQL Server com o controlador JDBC enquanto em modo de transacção manual (AutoCommit = false) e ao utilizar o direct (SelectMethod = directa) modo. Modo directo é o modo predefinido para o controlador.

Resolução

Quando utiliza o modo de transacção manual, deve definir a propriedade SelectMethod do controlador para cursor ou certifique-se que utiliza apenas uma instrução activa em cada ligação tal como especificado na secção "Mais informação" deste artigo.

Ponto Da Situação

Este comportamento ocorre por predefinição.

Mais Informação

Passos para reproduzir o comportamento

Utilize o seguinte código para reproduzir o erro:

Nota : consulte os comentários no código para obter informações sobre as alterações de código que são necessários para resolver o 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();
		}
	}
}
				

Referências

Para obter mais informações sobre ligações de acesso clonada, consulte a secção Propriedades de cadeia de ligação do controlador de Microsoft SQL Server 2000 para JDBC HTML Help ou guia on-line.Para obter informações adicionais sobre ligações clonadas com o controlador, clique no número de artigo existente abaixo para visualizar o artigo na base de dados de conhecimento da Microsoft:
313220PROBLEMA: Inesperadas ligações ao SQL Server com JDBC

Propriedades

Artigo: 313181 - Última revisão: 30 de junho de 2003 - Revisão: 2.0
A informação contida neste artigo aplica-se a:
  • Microsoft SQL Server 2000 Driver for JDBC
Palavras-chave: 
kbmt kbprb KB313181 KbMtpt
Tradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine translation ou MT), não tendo sido portanto revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática? erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 313181
Exclusão de Responsabilidade para Conteúdo sem Suporte na KB
Este artigo foi escrito sobre produtos para os quais a Microsoft já não fornece suporte. Por conseguinte, este artigo é oferecido "tal como está" e deixará de ser actualizado.

Submeter comentários

 

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