信息: 常见问题关于 ODBC 连接池

文章翻译 文章翻译
文章编号: 169470 - 查看本文应用于的产品
展开全部 | 关闭全部

概要

本文介绍的一些最常见的问题有关 ODBC 连接池。

更多信息

  1. 问: 什么 ODBC 连接池?

    A.连接池是一个 ODBC 3.0 中引入新功能。连接池允许 ODBC 应用程序重复使用的连接库中的连接。一旦连接被创建并放置池中 ODBC 应用程序可以重复使用相同的驱动程序中相同连接共享和环境 (henv) 无需执行完整的连接过程。但是,连接可永远不会被重新使用不同 henv 或不同的驱动程序之间。
  2. 问: 可以使用连接池与 2.x ODBC 驱动程序吗?

    A.连接池是 ODBC 3.0 版或更高版本的驱动程序管理器中实现的。驱动程序的版本并不重要。
  3. 问: 可以启用连接池使用 Microsoft Access 的驱动程序,因为驱动程序管理器中实现了连接池吗?

    答: 您可以启用连接池为 Microsoft Access 驱动程序。Microsoft Access 使用 Jet,和 Jet 是线程安全从开始 Jet 4.0。从 MDAC 2.1 及更高版本,您可以有连接池为访问 ODBC 驱动程序。
  4. 问: 如何启用连接池在 ODBC 应用程序?

    答: 一 ODBC 应用程序可以调用 SQLSetEnvAttr 用 SQL_ATTR_CONNECTION_POOLING 属性启用连接池。有关如何启用连接池在 ODBC 应用程序的详细信息请参阅 Microsoft 知识库中下面的文章:
    164221如何启用连接池在 ODBC 应用程序中
  5. 问: 如何启用连接池,如果在 Visual Basic 中编写的应用程序?

    答: 在 Visual Basic 或 ODBC 应用程序可以调用 SQLSetEnvAttr 函数启用连接池。连接池是一个进程级的属性,所以通过 ODBC 驱动程序管理器在 Visual Basic 应用程序中所做的任何后续连接将使用连接池。Visual Basic 应用程序可以使用启用连接池的函数声明和代码
          Declare Function SQLSetEnvAttr Lib "odbc32.dll" (ByVal henv As Long,
          ByVal Attribute As Long, ByVal Value As Long, ByVal StringLength As
          Long) As Integer
    
          ' env attribute
          Public Const SQL_ATTR_CONNECTION_POOLING = 201
          Public Const SQL_ATTR_CP_MATCH = 202
    
          ' values for SQL_ATTR_CONNECTION_POOLING
          Public Const SQL_CP_ONE_PER_DRIVER = 1
          Public Const SQL_IS_UINTEGER = -5
    
          nstatus = SQLSetEnvAttr(0, SQL_ATTR_CONNECTION_POOLING,
          SQL_CP_ONE_PER_DRIVER, SQL_IS_UINTEGER)
          SQLAllocEnv...
          SQLAllocConnect...
          SQLConnect...
          SQLDisConnect...
          SQLFreeConnect...
          SQLFreeEnv...
    					
    有关更多的信息请单击下面文章编号,以查看 Microsoft 知识库中相应的文章:
    237844HOWTO: 启用 ODBC 连接池 VB ADO 应用程序中
    228843从 Visual Basic ADO 程序的 HOWTO: 实现会话池
  6. 问: 如何启用连接池在 OLE DB 应用程序?

    答: 一个 OLE DB 应用程序可以调用 SQLSetEnvAttr 启用连接池。

    有关如何启用连接池在 OLE DB 应用程序中的详细信息请参阅 Microsoft 知识库中下面的文章:
    166083如何启用连接池在 OLE DB 应用程序中
  7. 问: 如何启用连接池的活动服务器页面 (ASP) 或 ActiveX 数据对象 (ADO)?

    答: Microsoft Internet 信息服务器 (IIS) 3.0 版用活动服务器页利用连接池。您可以启用连接池为 IIS 用户通过更改 StartConnectionPool 的值为 1。在 StartConnectionPool 位于 HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\W3SVC\ASP \Parameters。
  8. 问: 我如何限制在池中的连接数?

    答: 在池中的连接数由 ODBC 驱动程序管理器。ODBC 应用程序不能控制它。
  9. 问: 如何执行监视多少连接是在库中?

    答: 您可以监视在连接池中的连接。有关更多的信息请单击下面文章编号,以查看 Microsoft 知识库中相应的文章:
    216950如何启用 ODBC 连接池性能计数器
    238442ODBC 连接池对象从 PerfMon 消失
    245543信息: ODBC 连接池在 $ 性能监视器计数器
  10. 问: 如何清理池中连接?

    A.长的连接仍在池取决于 CPTimeout 属性的 ODBC 驱动程序。在超时过期时, 将关闭连接,并将其从池中删除。ODBC 应用程序可以使用 SQLConfigDriver 更改 CPTimeout 的值,该值应用于所有 ODBC 应用程序正在使用指定的 ODBC 驱动程序。在 CPTimeout 的默认值是 60 秒。
  11. 问: 是否需要显式启用连接池,如果我的应用程序运行在 Microsoft 事务服务器?

    答: 如果您要通过 ODBC 驱动程序与 ODBC 数据源,Microsoft 事务服务器启用连接池 ; 您不必显式启用连接池。
  12. 问: What if 在池中的连接进入不正确吗?将 ODBC 驱动程序管理器无法检测到它吗?

    A.ODBC 3.0 举办通过连接不正确而不检查该连接是否为错误。与服务包 1 时,驱动程序管理器将检测连接不正确。错误在池中的连接是否驱动程序管理器将检测它,并返回正常的连接。如果不能创建连接良好驱动程序管理器将返回一条错误消息。
  13. 问: 使用 ODBC 3.0 Service Pack 1,将 ODBC 驱动程序管理器试图连接到该数据库服务器反复当服务器不可用?

    A.ODBC 3.0 Service Pack 1 引入一个新的 API,ODBCSetTryWaitValue,可防止 ODBC 驱动程序管理器反复连接到不可用的服务器。ODBCSetTryWaitValue 采用一个 DWORD 参数,并将信息保存在注册表中以下位置:
    HKEY_LOCAL_MACHINE\Software\Odbc\Odbcinst.ini \ODBC 连接 Pooling\Retry 等待
    diver 管理器检测到坏数据库服务器后, 它会返回一条错误消息,并将标记与时间连接。从该点,直到 RetryWait 值过期,驱动程序管理器将失败返回而不尝试重新连接到该数据库服务器。

    有关如何使用 ODBCSetTryWaitValue ODBC API,请参阅下面的文章 Microsoft 知识库中相应的详细信息:
    168250IIS 性能下降错误连接

参考

有关连接池和会话池的详细信息请参阅下面的 Microsoft 网站:
http://msdn2.microsoft.com/en-us/library/ms810829.aspx

属性

文章编号: 169470 - 最后修改: 2007年2月15日 - 修订: 3.3
这篇文章中的信息适用于:
  • Microsoft Open Database Connectivity 3.0(开放式数据库连接)
  • Microsoft Data Access Components 1.5
  • Microsoft Data Access Components 2.0
  • Microsoft Data Access Components 2.1
  • Microsoft Data Access Components 2.5
  • Microsoft Data Access Components 2.6
  • Microsoft Data Access Components 2.7
关键字:?
kbmt kbdatabase kbgrpdsmdac kbgrpdsvcdb kbinfo kbmdac250 kbmdac260 kbmdac270 kbodbc kboledb kbusage kbvbp KB169470 KbMtzh
机器翻译
注意:这篇文章是由无人工介入的微软自动的机器翻译软件翻译完成。微软很高兴能同时提供给您由人工翻译的和由机器翻译的文章, 以使您能使用您的语言访问所有的知识库文章。然而由机器翻译的文章并不总是完美的。它可能存在词汇,语法或文法的问题,就像是一个外国人在说中文时总是可能犯这样的错误。虽然我们经常升级机器翻译软件以提高翻译质量,但是我们不保证机器翻译的正确度,也不对由于内容的误译或者客户对它的错误使用所引起的任何直接的, 或间接的可能的问题负责。
点击这里察看该文章的英文版: 169470
Microsoft和/或其各供应商对于为任何目的而在本服务器上发布的文件及有关图形所含信息的适用性,不作任何声明。 所有该等文件及有关图形均"依样"提供,而不带任何性质的保证。Microsoft和/或其各供应商特此声明,对所有与该等信息有关的保证和条件不负任何责任,该等保证和条件包括关于适销性、符合特定用途、所有权和非侵权的所有默示保证和条件。在任何情况下,在由于使用或运行本服务器上的信息所引起的或与该等使用或运行有关的诉讼中,Microsoft和/或其各供应商就因丧失使用、数据或利润所导致的任何特别的、间接的、衍生性的损害或任何因使用而丧失所导致的之损害、数据或利润不负任何责任。

提供反馈

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com