Por que meu Access 2010 ADP não está filtrando suas instruções SQL quando conectado ao MSSQL 2008 R2?

2

Eu uso o MSSQL MS para a maioria das tarefas administrativas nos bancos de dados do SQL Server 2008 R2, mas acho que usar o Access (via ADP, não tabelas vinculadas) para exibir e editar dados brutos da tabela é muito mais eficiente. (Isto é para uso de sysadmin apenas, é claro, o acesso do usuário é através de um aplicativo da web, e as tabelas em questão são relativamente pequenas, talvez algumas milhares de linhas.)

No entanto, desde a mudança para o Access 2010, o desempenho tanked ao filtrar e ordenar tabelas em um ADP, e observá-lo via Profiler, eu sei porque - Access não é apenas não preparando uma cláusula WHERE para o MSSQL implementar os filtros, está solicitando a tabela bruta várias vezes, independentemente de quais filtros estão no lugar. Em outras palavras, faz algo assim:

SET ROWCOUNT 10000 
SELECT "dbo"."MYTABLE".* FROM "dbo"."MYTABLE"
SET ROWCOUNT 0 
SELECT "dbo"."MYTABLE".* FROM "dbo"."MYTABLE"
SET ROWCOUNT 10000 
SELECT "dbo"."MYTABLE".* FROM "dbo"."MYTABLE"
SET ROWCOUNT 0 
SELECT "dbo"."MYTABLE".* FROM "dbo"."MYTABLE"

(deixei de fora algumas instruções extras onde está lendo as propriedades da coluna estendida.)

O que diabos o Access está fazendo aqui, e como posso fazê-lo usar o SQL Server para realizar a filtragem e a classificação, e não fazer várias viagens toda vez que os filtros da tabela forem alterados?

    
por richardtallent 16.10.2012 / 16:31

0 respostas