Mensagem de erro quando você implementa uma transação aninhada com o provedor OLE DB para SQL Server: "Não foi possível iniciar uma transação para o provedor OLE DB"

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

Neste artigo

Sintomas

Microsoft OLE DB Provider para SQL Server não dá suporte para transações aninhadas e a seguinte mensagem de erro é retornada:
Não foi possível iniciar uma transação para o provedor do OLE DB '% 1!'.
Microsoft SQL Server também retorna a seguinte mensagem de erro se o provedor for um provedor específicas do SQL Server:
Servidor: Mensagem 7392, nível 16, estado 2,
Não foi possível iniciar uma transação para provedor OLE DB 'SQLOLEDB'. [Provedor OLE/DB retornado mensagem: apenas uma transação pode estar ativa nesta sessão.]

Causa

Este erro indica que uma instrução de modificação de dados está sendo tentada contra um provedor OLE DB quando a conexão está em uma transação explícita ou implícita, e o provedor de banco de dados OLE não oferece suporte a aninhadas transações. SQL Server requer esse suporte para que, em determinadas condições de erro, ele pode finalizar os efeitos da instrução de modificação de dados enquanto continua com a transação.

Resolução

Para contornar este problema, defina XACT_ABORT como ativado antes que a transação. Isso faz com que SQL Server para encerrar a transação ao redor quando ocorre um erro ao processar a instrução de modificação de dados. Se SET XACT_ABORT ativado, o SQL Server não requer suporte a transações aninhadas do provedor de banco de dados OLE.

Situação

Esse comportamento é por design.

Mais Informações

Etapas para reproduzir o problema

Este exemplo utiliza um servidor vinculado, que usa o provedor OLE DB para SQL Server, para explicar o efeito de XACT_ABORT.
  1. Usar OLE DB Provider for SQL Server para criar um servidor vinculado chamado Sales que usa o Microsoft OLE DB Provider para SQL Server.
    USE Master
    GO
    EXEC sp_addlinkedserver 
        'Sales',
        N'SQL Server'
    GO
    					
  2. Abra o Query Analyzer e execute o comando a seguir.
    Begin Transaction
    Insert into Sales.Northwind.DBO.Customers(CustomerId,CompanyName) Values ('1000','Test')
    Commit Transaction
    					
    você recebe a mensagem de erro mencionadas anteriormente.

    Solução alternativa

  3. Execute o seguinte comando para definir XACT_ABORT ativado:
    Set XACT_ABORT ON
    					
  4. Execute a instrução Inserir novamente. Observe que os dados estão inseridos na tabela sem erro.

Referências

Para obter informações adicionais, clique nos números abaixo para ler os artigos na Base de dados de Conhecimento da Microsoft:
177138INFO: Aninhadas transações não está disponíveis no ODBC/OLE DB/ADO
187289COMO: Implementar transações aninhadas com Oracle

Propriedades

ID do artigo: 306649 - Última revisão: sexta-feira, 9 de dezembro de 2005 - Revisão: 4.2
A informação contida neste artigo aplica-se a:
  • Microsoft SQL Server 2000 Standard Edition
  • Microsoft SQL Server 7.0 Standard Edition
  • Microsoft Data Access Components 2.6
  • Microsoft Data Access Components 2.6 Service Pack 1
Palavras-chave: 
kbmt kbprb KB306649 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: 306649

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