为什么我的 Access 2010 ADP 在连接到 MSSQL 2008 R2 时不过滤其 SQL 语句?

为什么我的 Access 2010 ADP 在连接到 MSSQL 2008 R2 时不过滤其 SQL 语句?

我使用 MSSQL MS 执行 SQL Server 2008 R2 数据库上的大多数管理任务,但我发现使用 Access(通过 ADP,而不是链接表)查看和编辑原始表数据效率更高。(这仅供系统管理员使用,当然,用户访问是通过 Web 应用程序进行的,并且所讨论的表相对较小,可能只有几千行。)

然而,自从切换到 Access 2010 以来,性能喝醉了当我在 ADP 中过滤和排序表格并通过 Profiler 观察它时,我知道为什么——Access 不仅仅是不是为 MSSQL准备一个WHERE子句来实现过滤器,它会多次请求原始表,无论使用哪种过滤器。换句话说,它会执行如下操作:

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"

(我省略了一些读取扩展列属性的额外语句。)

Access 在这里到底在做什么?我怎样才能让它使用 SQL Server 执行筛选和排序,以及如何不是每次更改表过滤器时都要进行多次往返?

相关内容