CORRECÇÃO: Provedor SQLOLEDB incorretamente deixa transação aberta

Traduções deste artigo Traduções deste artigo
ID do artigo: 281633 - Exibir os produtos aos quais esse artigo se aplica.
Este artigo foi arquivado. É oferecido "como está" e não será mais atualizado.
BUG #: 58292 (SQLBUG_70)
BUG #: 235846 (SHILOH)
Expandir tudo | Recolher tudo

Neste artigo

Sintomas

Executar uma determinada seqüência de comandos que envolvam transações explícitas e parâmetros em um programa aplicativo usando o provedor SQLOLEDB incorretamente deixa uma transação não confirmada aberta. Isso pode causar bloqueio grave e outros problemas.

Causa

Embora a opção SET 'implicit_transactions' é definida como desativado, o provedor SQLOLEDB está abrindo uma transação implícita.

Resolução

MDAC 2.6

Para resolver esse problema, obtenha o service pack mais recente para o Microsoft Data Access Components 2.6. Para obter informações adicionais, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
300635Como obter o service pack mais recente do MDAC 2.6

Hotfix

importante : Microsoft Data Access Components versão 2.6 deve ser instalado antes de aplicar esse hotfix.

A versão em inglês dessa correção deve ter os seguintes atributos de arquivo ou posteriores:
   Date       Time     Version     Size      File name      Platform
   -----------------------------------------------------------------
   11/22/00   8:43pm   8.00.0225   491,584   Sqloledb.dll   Intel
   11/22/00   8:43pm   8.00.0225    61,440   Sqloledb.rll   Intel
				
Observação: devido a dependências do arquivo, o hotfix mais recente ou o recurso que contém os arquivos acima pode também conter arquivos adicionais.

Como Contornar

Para contornar este problema, siga um destes procedimentos:
  • Use o provedor OLE DB para ODBC em vez do SQLOLEDB provider.

    - ou -
  • Coloca transações adicionais ao redor o código que cria o problema.

Situação

A Microsoft confirmou que este é um problema no provedor Microsoft OLE DB para SQL Server está incluído no Microsoft Data Access Components (MDAC) versões 2.1, 2.5 e 2.6.

MDAC 2.6

Esse problema foi corrigido primeiro no Microsoft Data Access Components 2.6 Service Pack 1.


MDAC 2.5

Esse problema foi corrigido primeiro na versão do Sqlredis.exe está incluído no Microsoft SQL Server 7.0 Service Pack 4.

Mais Informações

Por meio de rastreamento do aplicativo, poder ver no SQL Server Profiler que o provedor SQLOLEDB está enviando as instruções a seguir para o SQL Server:
SET FMTONLY ON select ... SET FMTONLY OFF
set implicit_transactions off SET NO_BROWSETABLE OFF
				
este implicit_transaction faz com que um ' ' já que está sendo aberto.

Ao usar o provedor OLE DB para ODBC e o driver do SQL Server em vez disso, o mesmo código Visual Basic/ADO exato envia as instruções a seguir ao SQL Server:
set implicit_transactions off SET NO_BROWSETABLE OFF
SET FMTONLY ON select  ... SET FMTONLY OFF
				
, portanto, o SELECT FMTONLY abre uma transação implícita com SQLOLEDB. No entanto, como o aplicativo nunca aberto esta transação, o aplicativo será normalmente nunca fechado-lo. Esta transação será fechada apenas após a próxima transação explícita.

Propriedades

ID do artigo: 281633 - Última revisão: domingo, 23 de fevereiro de 2014 - Revisão: 6.4
A informação contida neste artigo aplica-se a:
  • Microsoft SQL Server 7.0 Standard Edition
  • Microsoft SQL Server 2000 Standard Edition
  • Microsoft Data Access Components 2.1
  • Microsoft Data Access Components 2.5
  • Microsoft Data Access Components 2.6
Palavras-chave: 
kbnosurvey kbarchive kbmt kbhotfixserver kbqfe kbbug kbfix kbmdac260sp1fix kbqfe KB281633 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: 281633

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