MS Access 直通查询 - 使用 ODBC 连接字符串时非常慢,手动选择数据源时速度快 - 问题出在哪里
Posted
技术标签:
【中文标题】MS Access 直通查询 - 使用 ODBC 连接字符串时非常慢,手动选择数据源时速度快 - 问题出在哪里【英文标题】:MS Access pass-through query - very slow when use ODBC connection string, fast when datasource selected manualy - where is the issue 【发布时间】:2016-01-03 17:50:02 【问题描述】:我使用 ODBC 和文件数据源从 ms 访问(前端)连接到 MS SQL 服务器(数据库)。我创建了从 SQL Server 收集数据的 MS Access pass-trough 查询(直接调用 MS SQL Server 函数返回表)。 当我在 MS SQL 管理控制台中运行此查询时,它运行大约 1 秒。当我使用 ODBC 连接字符串从 MS Access 运行它时,相同的查询运行大约 5 分钟(!!)。但是当我从查询属性中清除连接字符串时,它会运行 1 到 2 秒(可以接受)。 使用相同连接字符串的其他查询和链接表工作正常(所以字符串相当OK) 这到底是怎么回事?有什么想法要检查吗?
【问题讨论】:
首先要检查的是连接字符串本身,您没有费心向我们展示。另外,当您说“从查询属性中清除连接字符串”时,您是什么意思?如果它真的是一个直通查询,那么它需要某种连接字符串,否则它根本不起作用。 是的,请发布 VBA/SQL 代码。传递查询不使用任何 Access 对象(表、查询、表单),而仅使用位于服务器上的对象。现在你可以传递标量参数了。 您可能会在 Windows 授权和 SQL 授权之间切换。因此,一个缓慢的域服务器可能在这里发挥作用。您使用的是 SQL 身份验证,还是 Windows 身份验证?此外,我们假设您只需在 Access 客户端中打开 PT 查询(此处不涉及某种形式或报告)即可进行测试。 【参考方案1】:我知道这是一篇旧帖子,但是...我一直在谷歌搜索无济于事,所以我想把它放在那里...
我有一个向下钻取 SP,它返回.... 最多 200 行 MS Access 应用程序使用对 Azure 的 ALL 传递查询。除了这个之外,所有的工作都很好。在 SSMS 中,它几乎立即返回。 ODBC 字符串在所有查询上都是相同的,所以连接很好。
将 max rows 属性设置为 1000 后,表单几乎立即返回。清除了属性,它又变慢了……
这家酒店绝对让我与众不同。将其设置为远远超出上限的数字确实可以正常工作。
hth, ..鲍勃
【讨论】:
【参考方案2】:我只使用 Windows 身份验证(信任)。 “清除”表示删除除“ODBC”之外的所有内容;短语。当我在查询属性中留下此通知时,Access 要求提供 DSN,我选择一个,然后在 2 sek 后得到结果。 但是当我把完整的连接字符串
ODBC;Description=我的数据库;DRIVER=SQL Server;SERVER=MYSERVER;APP=2007 Microsoft Office system;DATABASE=MYDB_Prod;LANGUAGE=polski;Trusted_Connection=Yes
我调用的查询是:
SELECT * FROM dbo.fn_MyFunction()
函数 fn_MyFunction() 是表值一,返回两行和大约 50 列(怀疑列数可能是问题,因为其他查询少),它用于访问报告(这就是我使用的原因通过查询 - 当我使用通过 odbc 链接到 MS Access 表的 MS SQL 服务器视图进行测试时,也会发生同样的情况)
相同的连接字符串适用于其他查询
似乎我找到了解决方案(或者更确切地说是解决方法?)我已经通过 Internet 链接使用 *** 进行了测试。当我搬到办公室时 - 它运行良好,几乎立即返回我上面写的字符串。
链接类型有这样的影响对我来说很奇怪:其他查询在两者上都运行良好(LAN 和 Internet 上的 ***),但这个 - 仅在 LAN 上(也可以在 Internet 上运行,但性能不可接受)。我可以理解如果一切运行缓慢.. 为什么这个?有什么想法吗?
【讨论】:
可能由于运行 SP 而“检查”了额外的权限——这样的身份验证可能会在 *** 上花费更长的时间。我实际上会使用 SQL 登录测试相同的链接 PT,看看是否会改变这一点。以上是关于MS Access 直通查询 - 使用 ODBC 连接字符串时非常慢,手动选择数据源时速度快 - 问题出在哪里的主要内容,如果未能解决你的问题,请参考以下文章
MS Access 直通查询 - 使用 ODBC 连接字符串时非常慢,手动选择数据源时速度快 - 问题出在哪里
如何使 MS Access 直通查询在 SQL Server 中正确运行
ODBC 连接凭据如何存储在 MS Access 中? [关闭]