ACC2000: Microsoft Jet não passar WHERE cláusula à origem de dados ODBC

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: 282604
Este artigo foi arquivado. Este artigo é oferecido "tal como está" e deixará de ser actualizado.
Avançado: Requer conhecimentos avançados sobre codificação, interoperabilidade e multi-utilizador.

Este artigo aplica-se apenas a uma base de dados do Microsoft Access (.mdb).

Sintomas
Quando utiliza o Access 2000 Service Release 1 (SR-1) com o Microsoft Jet 4.0 Service Pack 5 (SP5) para consulta tabelas ligadas de duas bases de dados separados no mesmo servidor, poderá verificar que Jet não passa os parâmetros da cláusula WHERE para a origem de dados ODBC quando ambos os seguintes procedimentos que se seguem:
  • A consulta cria uma associação entre duas tabelas.
  • A consulta contém uma cláusula WHERE que utiliza a ou e os operadores AND .
É possível que desempenho das consultas é extremamente lento quando efectua uma consulta grandes conjuntos de dados nestas condições. Guardar a palavra-passe quando ligar as tabelas pode ou não poderá afectar o desempenho. Isto só afecta 4.0.4431.x de versão de Msjet40.dll
Causa
Jet não envia a cláusula WHERE para uma ou ambas as tabelas consultadas. Isto faz com que o servidor devolver todas as linhas ao cliente.
Resolução
Para resolver este problema, instale o Jet 4.0 service pack mais recente. Para obter informações adicionais sobre como obter e instalar o Jet 4.0 service pack mais recente, 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 primeiro corrigido no Jet 4.0 Service Pack 6 (SP6).
Mais Informação

Passos para reproduzir o comportamento

  1. Num computador com o Microsoft SQL Server 7.0, utilize o Enterprise Manager para criar uma nova base de dados denominada pubs2.
  2. Abra o Enterprise Manager.
  3. Expanda o grupo de servidores para o servidor local.
  4. Clique com o botão direito do rato em bases de dados e, em seguida, seleccione a opção para criar uma nova base de dados (aceitar todas as predefinições).
  5. Alterar o novo nome de base de dados para pubs2 e feche a caixa de diálogo.
  6. Copie a tabela de autores de pubs para pubs2, utilizando o Enterprise Manager ou executando a seguinte instrução SELECT no analisador de consultas:
    SELECT * INTO pubs2Os autores FROM pubsautores
  7. Crie uma nova base de dados no Access denominada Test.mdb .
  8. Crie um novo sistema DSN TestPubs ao servidor de SQL 7.0. Altere a base de dados predefinido para pubs e fornecer um ID de utilizador válido e palavra-passe.
  9. Crie um novo sistema DSN TestPubs2 ao servidor de SQL 7.0. Altere a base de dados predefinido para pubs2 e fornecer um ID de utilizador válido e palavra-passe.
  10. Ligar pubs.titleauthor Test.mdb utilizando "TestPubs." Não guarde a palavra-passe.
  11. Ligar pubs2.authors Test.mdb utilizando "TestPubs2." Não guarde a palavra-passe.
  12. Crie a seguinte nova consulta na vista de estrutura no Test.mdb:
    SELECT dbo_authors.au_id dbo_authors.au_lname, dbo_titleauthor.title_id
    FROM dbo_authors INNER JOIN dbo_titleauthor ON dbo_authors.au_id = dbo_titleauthor.au_id
    WHERE (dbo_authors.au_lname = "Campainha" AND dbo_titleauthor.title_id = "PS2106") ou dbo_authors.au_lname = "Branco"
  13. Guarde a consulta como qSel2Authors .
  14. Saia do Access.
  15. Iniciar rastreio através da ferramenta origens de dados ODBC no painel de controlo.
  16. Abra Test.mdb e, em seguida, executar qSel2Authors.
  17. Saia do Access.
  18. Pare rastreio na ferramenta origens de dados ODBC no painel de controlo.
  19. Abra o registo de rastreio no Microsoft Word 2000.
  20. Procurar id_au no registo de rastreio.

    Tome nota da instrução SELECT enviada e os registos devolvidos.
  21. Procurar id_título no registo de rastreio.

    Tome nota da instrução SELECT enviada e os registos devolvidos.
PRB

Aviso: Este artigo foi traduzido automaticamente

Propriedades

ID do Artigo: 282604 - Última Revisão: 02/24/2014 03:23:15 - Revisão: 3.1

Microsoft Access 2000 Service Pack 1, Microsoft Data Access Components 2.6

  • kbnosurvey kbarchive kbmt kbbug kbfix KB282604 KbMtpt
Comentários