【问题标题】:Persistant Connection to linked ODBC tables in Access 2007Access 2007 中链接的 ODBC 表的持久连接
【发布时间】:2011-06-06 04:37:43
【问题描述】:

我正在尝试使用 ODBC 链接表为 MS Access 2007 数据库实现和测试 this Performance tip

基本上,它会创建到链接数据库的持久连接。该示例使用另一个 Access 文件 (.mdb)。

在我的例子中,我使用来自 SQL Server 的链接表和一个文件 dsn.虽然我想使用用户/系统 DSN,但我现在需要使用文件 DSN。我无法通过文件 DSN 和 openDatabase 方法建立连接。

问题:如果我只是通过记录集打开其中一个表并保持打开状态,是否会看到相同的好处?

示例代码:

Static dbsOpen As DAO.Database
Set dbsOpen(x) = OpenDatabase("H:\folder\Backend1.mdb")

基于 CurrentDB 的记录集:

Static rs As DAO.Recordset
Set rs = CurrentDb.OpenRecordset("tablename")

【问题讨论】:

    标签: ms-access linked-list vba odbc ms-access-2007


    【解决方案1】:

    从 Access 中的持久连接获得的性能优势仅适用于 Jet/ACE 后端,即 MDB/ACCDB,因为性能提高的原因是在打开连接时创建了锁定文件只要连接打开,它就会一直存在。创建/锁定 LDB 文件的开销非常高,而这正是您要避免的,即只执行一次,而不是每次访问数据时都重做。

    因此,由于它是特定于数据库引擎的优化,因此它对 ODBC 数据源完全有效,除非该数据库也使用锁定文件(如 Jet/ACE)。

    【讨论】:

    • 那么您认为使用 ODBC 连接会产生负面影响还是中性影响?对连接池有什么影响吗?
    • 它不会是非常积极的,并且可能是有害的,因为 SQL 服务器会保持连接打开,这会耗尽资源。一般建议是,除非您将在不久的将来(
    • 我不确定这是个问题,凯文。这实际上取决于 Jet/ACE 是否池连接。我还认为,无论您的应用程序是否关闭连接,大多数服务器都会在不活动后关闭连接,因此您可能会受益于关闭连接而无需在代码中执行此操作。我无法想象连接数会成为问题,除非您的 Access 应用程序在数百个桌面上运行。大多数升级后的应用程序都不是这种情况。确实,我并不认为一开始该类别中有那么多 Access 应用程序。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-15
    • 2014-09-12
    相关资源
    最近更新 更多