CORRECÇÃO: O uso ineficiente da cláusula LIKE com provedor OLEDB do Jet

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

Neste artigo

Sintomas

Quando você executa uma consulta SQL usando o Microsoft Jet OLEDB Provider 4.0 e você aplicar uma cláusula LIKE para uma tabela vinculada do SQL Server, a cláusula LIKE não é corretamente encaminhada pelo processador de consulta do Microsoft Jet para o SQL Server. Isso resulta em uma consulta geral menos eficiente, pois todas as linhas são primeiro recuperadas no SQL Server localmente pelo Jet.

Observe que após todas as linhas são recuperadas localmente pelo Jet, a cláusula LIKE é aplicada internamente para o resultado final antes de enviá o resultado para o cliente, para que o resultado final é o mesmo conjunto de linhas.

Resolução

Para resolver esse problema, instale o Microsoft Jet 4.0 service pack mais recente. Para obter informações adicionais, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
239114Como: Obter o Service Pack mais recente para o Microsoft Jet 4.0 Database Engine

Situação

A Microsoft confirmou que este é um problema nos produtos da Microsoft listados no começo deste artigo. Esse problema foi corrigido no Jet 4.0 Service Pack 6 (SP6).

Mais Informações

Etapas para reproduzir o problema

  1. Crie um banco de dados novo do Microsoft Access chamado "C:\DB1.MDB".
  2. Abra C:\DB1.MDB no Microsoft Access e crie uma tabela vinculada para a tabela autores localizada no banco de dados pubs no SQL server. Manter o nome de tabela vinculada padrão do dbo_authors .
  3. Executar a consulta a seguir usando o Microsoft Jet OLEDB Provider 4.0 com o banco de dados do Access C:\DB1.MDB.
    SELECT * from dbo_authors WHERE state LIKE 'M%'
    					
Se você monitorar o servidor de SQL Server de back-end usando o utilitário SQL Server Profiler, você verá que instruções SQL a seguir são enviadas para o SQL Server, indicando que o otimizador de consulta do Microsoft Jet está aplicando o critério LIKE depois de recuperar todas as linhas da tabela autores . Observe que todas as instruções SQL não críticas foram removidas e comentários foram adicionados ao descrever as várias instruções SQL enviadas pelo Microsoft Jet.
-- This is sent first by Jet to fetch all key values.  
-- Note that WHERE state LIKE 'M%' is not applied here.

SELECT au_id, state FROM authors 

-- This retrieves a single row using the first key value retrieved by the
-- above SQL statement. Jet will apply the LIKE clause internally
-- before retrieving the first row.

SELECT au_id,au_lname,au_fname,phone,address,city,state,zip,contract  
FROM dbo.authors WHERE au_id = @P1 
				
se você executar a consulta SQL idêntica usando o driver de ODBC do Microsoft Access, a cláusula LIKE corretamente é encaminhada para SQL Server na primeira instrução SQL, resultando em uma consulta geral muito mais eficiente.

Propriedades

ID do artigo: 311159 - Última revisão: quarta-feira, 12 de outubro de 2005 - Revisão: 1.4
A informação contida neste artigo aplica-se a:
  • Microsoft OLE DB Provider for Jet 4.0
Palavras-chave: 
kbmt kbhotfixserver kbqfe kbbug kbfix kbqfe KB311159 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: 311159
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