PROBLEMA: Não é possível iniciar uma conexão clonada enquanto no modo de transação manual

Traduções deste artigo Traduções deste artigo
ID do artigo: 313181 - Exibir os produtos aos quais esse artigo se aplica.
Expandir tudo | Recolher tudo

Neste artigo

Sintomas

Ao usar o driver do Microsoft SQL Server 2000 para JDBC, você pode enfrentar a seguinte exceção:
Java.SQL.SQLException: [Microsoft] [SQLServer driver do 2000 para JDBC] não é possível iniciar uma conexão clonada no modo de transação manual.

Causa

Este erro ocorre quando você tenta executar várias instruções em um banco de dados SQL Server com o driver JDBC no modo de transação manual (AutoCommit = false) e ao usar a direta (SelectMethod = direta) modo. Modo direto é o modo padrão para o driver.

Resolução

Quando você usa o modo de transação manual, você deve definir a propriedade SelectMethod do driver até o cursor ou, certifique se de usar apenas uma instrução ativa em cada conexão conforme especificado na seção "Mais informações" deste artigo.

Situação

Esse comportamento é por design.

Mais Informações

Passos para reproduzir o problema

Use o seguinte código para reproduzir o erro:

Observação : consulte os comentários no código para obter informações sobre as alterações código que são necessárias 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 conexões clonada, consulte a seção Propriedades de String de conexão o driver do Microsoft SQL Server 2000 para JDBC Ajuda em HTML ou o guia on-line.Para obter informações adicionais sobre clonados conexões com o driver, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
313220PROBLEMA: Conexões inesperados ao SQL Server com o JDBC

Propriedades

ID do artigo: 313181 - Última revisão: segunda-feira, 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 traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 313181
Aviso de Isenção de Responsabilidade sobre Conteúdo do KB Aposentado
Este artigo trata de produtos para os quais a Microsoft não mais oferece suporte. Por esta razão, este artigo é oferecido "como está" e não será mais atualizado.

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