CORRECÇÃO: Utilização ineficaz cláusula LIKE com o fornecedor de OLEDB do Jet

Traduções de Artigos Traduções de Artigos
Artigo: 311159 - Ver produtos para os quais este artigo se aplica.
Expandir tudo | Reduzir tudo

Nesta página

Sintomas

Quando executar uma consulta SQL utilizando o Microsoft Jet OLEDB fornecedor 4.0 e aplicar uma cláusula LIKE para uma tabela ligada do SQL Server, a cláusula LIKE não é correctamente reencaminhada pelo processador de consultas do Microsoft Jet para o SQL Server. Isto resulta numa consulta geral menos eficiente, porque todas as linhas são primeiro obtidas a partir do SQL Server localmente pelo Jet.

Tenha em atenção que depois todas as linhas são obtidas localmente pelo Jet, a cláusula LIKE é aplicada internamente o resultado final antes de enviar o resultado ao cliente, pelo que o resultado final é o mesmo conjunto de linhas.

Resolução

Para resolver este problema, instale o Microsoft Jet 4.0 service pack mais recente. Para obter informações adicionais, clique no número de artigo que se segue para visualizar o artigo na Microsoft Knowledge Base:
239114Como: Obter o Service Pack mais recente para o motor de base de dados Microsoft Jet 4.0

Ponto Da Situação

A Microsoft confirmou que este é um problema nos produtos da Microsoft listados no início deste artigo. Este problema foi corrigido no Jet 4.0 Service Pack 6 (SP6).

Mais Informação

Passos para reproduzir o comportamento

  1. Crie uma base novo de Microsoft Access dados com o nome "C:\DB1.MDB".
  2. Abra C:\DB1.MDB no Microsoft Access e crie uma tabela ligada à tabela autores localizada na base de dados pubs no servidor de SQL Server. Mantenha o nome de tabela predefinido de dbo_authors .
  3. Execute a seguinte consulta a utilizar o o fornecedor de OLEDB Microsoft Jet 4.0 em relação à base de dados C:\DB1.MDB.
    SELECT * from dbo_authors WHERE state LIKE 'M%'
    					
Se monitorizar o servidor de SQL Server back-end utilizando o utilitário de SQL Server Profiler, verá que as seguintes instruções SQL são enviadas para o SQL Server, que indica que o Optimizador de consultas do Microsoft Jet é aplicar critérios LIKE depois de obter todas as linhas a partir da tabela autores . Tenha em atenção que foram removidas todas as instruções de SQL não críticas e comentários 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 executar a consulta SQL idêntica utilizando o controlador ODBC do Microsoft Access, a cláusula LIKE correctamente é reencaminhada para SQL Server na primeira instrução de SQL, resultando na consulta geral muito mais eficiente.

Propriedades

Artigo: 311159 - Última revisão: 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 revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática? erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 311159
Exclusão de Responsabilidade para Conteúdo sem Suporte na KB
Este artigo foi escrito sobre produtos para os quais a Microsoft já não fornece suporte. Por conseguinte, este artigo é oferecido "tal como está" e deixará de ser actualizado.

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