Entrar

CORRECÇÃO: Erro de correlação usando Parameters.Refresh com SQLOLEDB

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.

297035
Este artigo foi arquivado. É oferecido "como está" e não será mais atualizado.
Sintomas
Ao executar uma consulta parametrizada UNION com o provedor de OLEDB SQLOLEDB, pode ser reportado ao seguinte erro:
Erro em tempo de execução '-2147467259 (80004005)':

O nome de correlação ' o ' está especificado várias vezes em uma cláusula FROM.
Resolução
Para resolver esse problema, obtenha o service pack mais recente para o SQL Server 2000, o service pack mais recente para o MDAC 2.6 ou o hotfix mencionado abaixo: Para obter informações adicionais, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
290211INF: Como obter o Service Pack mais recente do SQL Server 2000
Para obter informações adicionais, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
300635INFO: Como obter o último MDAC 2.6 Service Pack

Hotfix

A versão em inglês dessa correção deve ter os seguintes atributos de arquivo ou posteriores:
 Date        Version         Size      File name     Platform ------------------------------------------------------------- 05/17/2001  2000.080.0294   491,584   Sqloledb.dll     x86 05/17/2001  2000.080.0294    61,440   Sqloledb.rll     x86				
Como Contornar
Para contornar esse problema, certifique-se de que a ordem dos nomes de tabela em cada uma das instruções SELECT é a mesma em cada consulta UNION.
Situação
A Microsoft confirmou que este é um problema nos produtos da Microsoft listados no começo deste artigo. Esse problema foi corrigido primeiro no SQL Server 2000 Service Pack 2 e MDAC 2.6 Service Pack 2.
Mais Informações
Para reproduzir esse problema, execute o seguinte código Microsoft Visual Basic:
Sub CorrelationReproCode()Dim conn As ADODB.ConnectionDim cmd As ADODB.CommandDim sql As StringDim fUseOutOfOrderUNION As Boolean    Set conn = New ADODB.Connection    conn.Open "Provider=sqloledb;Server=.;Database=northwind;" & _              "Integrated Security=SSPI;"        ' Change this to False to avoid the problem.    fUseOutOfOrderUNION = True        If (fUseOutOfOrderUNION) Then        sql = "SELECT O.OrderDate FROM Customers R, Orders O " & _              "WHERE R.CustomerId = O.CustomerId AND R.CustomerId = ? " & _              "Union " & _              "SELECT O.OrderDate FROM Orders O, Customers R " & _              "WHERE R.CustomerID = O.CustomerID AND R.Region = ?"    Else        sql = "SELECT O.OrderDate FROM Customers R, Orders O " & _              "WHERE R.CustomerId = O.CustomerId AND R.CustomerId = ? " & _              "Union " & _              "SELECT O.OrderDate FROM Customers R, Orders O " & _              "WHERE R.CustomerID = O.CustomerID AND R.Region = ?"    End If    Set cmd = New ADODB.Command    cmd.CommandText = sql    Set cmd.ActiveConnection = conn    ' Error will occur here if fUseOutOfOrderUNION is set to True.    cmd.Parameters.Refresh    Set cmd.ActiveConnection = Nothing    Set cmd = Nothing    conn.Close    Set conn = Nothing    End Sub				

Aviso: Este artigo foi traduzido automaticamente

Propriedades

ID do Artigo: 297035 - Última Revisão: 01/17/2015 16:25:52 - Revisão: 2.3

  • Microsoft OLE DB Provider for SQL Server 7.0
  • Microsoft OLE DB Provider for SQL Server 7.01
  • Microsoft Data Access Components 2.6
  • kbnosurvey kbarchive kbmt kbhotfixserver kbqfe kbbug kbfix kbmdac260sp2fix kbsqlserv2000presp2fix KB297035 KbMtpt
Comentários