INFO: 常見關於 ODBC 連接共用區的問題

文章翻譯 文章翻譯
文章編號: 169470 - 檢視此文章適用的產品。
本文曾發行於 CHT169470
全部展開 | 全部摺疊

結論

本文包含部分最常見關於 ODBC 連接共用區的問題。

其他相關資訊

  1. 問:何謂 ODBC 連接共用區?

    答:連接共用區為 ODBC 3.0 中新增的功能之一。 連接共用區讓 ODBC 應用程式得以重複使用數個連線之一的連線。連線建立且亦成為共用連線之一以後,ODBC 應用程式在相同的共享環境 (henv) 即可重複使用同樣的驅動程式及連線,而不需經過完整的連線程序。然而,不同 henv 或驅動程式間不可重複使用連線。
  2. 問:我能以 2.x ODBC 驅動程式使用連接共用區嗎?

    答:只有版本 3.0 或更新的 ODBC 驅動程式管理員才支援連接共用區。驅動程式版本並無所謂。
  3. 問:如果驅動程式管理員支援連接共用區,我能以 Microsoft Access 驅動程式來啟用連接共用區嗎?

    答:您無法以 Microsoft Access 驅動程式使用連接共用區。Microsoft Access 驅動程式內部使用支援 apartment threaded model 的 Jet。換句話說,Jet 需要由相同的執行緒來處理連線與中斷連線的程序。如要啟用連接共用區,連線與中斷連線的程序必須由不同的執行緒來處理。此原則適用於所有使用 Jet 的 Microsoft Desktop 驅動程式。
  4. 問:我如何啟用 ODBC 應用程式中的連接共用區?

    答:ODBC 應用程式可以 SQL_ATTR_CONNECTION_POOLING 屬性呼叫 SQLSetEnvAttr,以啟用連接共用區。如需取得更多關於如何啟用 ODBC 應用程式中的連連接共用區,請參閱下列位於 Microsoft Knowledge Base 中的文件:
    164221 How to Enable Connection Pooling in an ODBC Application
  5. 問:如果應用程式是以 Visual Basic 撰寫的,我如何啟用連接共用區?

    答:Visual Basic 或 ODBC 應用程式可呼叫 SQLSetEnvAttr 函數以啟用連接共用區。連線共用屬於程序層級的屬性,因此在 Visual Basic 應用程式中透過 ODBC 驅動程式管理員所建立的任何後續連線皆可使用連接共用區。 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 Knowledge Base 中的文件:
    237844 HOW TO: Enable ODBC Connection Pooling in VB ADO Application
    228843 HOWTO: Implement Session Pooling from Visual Basic ADO Program
  6. 問:我如何啟用 OLE DB 應用程式中的連接共用區?

    答:OLE DB 應用程式可呼叫 SQLSetEnvAttr 來啟用連接共用區。

    如需取得更多關於如何啟用 OLE DB 應用程式中的連接共用區,請參閱下列位於 Microsoft Knowledge Base 中的文件:
    166083 How to Enable Connection Pooling in an OLE DB Application
  7. 問:我如何啟用 Active Server Pages (ASP) 或 ActiveX Data Objects (ADO) 的連接共用區?

    答:包含 Active Server Pages 的 Microsoft Internet Information server (IIS) 3.0 版善用連接共用區。將 StartConnectionPool 值設為 1 即可啟用 IIS 使用者連接共用區。StartConnectionPool 位於 HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\W3SVC\ASP \Parameters。 如需取得更進一步關於如何啟用 IIS 4.0 連接共用區,請按一下下列文件號碼以檢視位於 Microsoft Knowledge Base 中的文件:
    189410 HOW TO: HOWTO: Enable or Disable Connection Pooling in IIS 4.0
  8. 問:我該如何限制共用連線數?

    答:共用連線數由 ODBC 驅動程式管理員控制。ODBC 應用程式則無法加以控制。
  9. 問:我如何檢視共用連線數?

    答:您可以在連接共用區檢視連線數。 如需取得更進一步的資訊,請按一下下列文件號碼以檢視位於 Microsoft Knowledge Base 中的文件:
    216950 How to Enable ODBC Connection Pooling Performance Counters
    238442 ODBC Connection Pooling Object Disappears from PerfMon
    245543 INFO: ODBC Connection Pooling Counters in Performance Monitor
  10. 問:我該如何清除連接共用區中的連線?

    答:連線於連接共用區中的有效期限取決於 ODBC 驅動程式的 CPTimeout 內容。 超過逾時時間後,連線即會關閉且從共用連線中移除。ODBC 應用程式可使用 SQLConfigDriver 來變更 CPTimeout 的值,且此值適用於所有使用特定 ODBC 驅動程式的 ODBC 應用程式。CPTimeout 的預設值為 60 秒。
  11. 問:如果我的應用程式在 Microsoft Transaction Server 中執行,我是否必須明確啟用其連接共用區?

    答:如果您需透過 ODBC 驅動程式使用 ODBC 資料來源,Microsoft Transaction Server 即會啟用連接共用區;您不需要明確啟用其連接共用區。
  12. 問:如果連接共用區發生問題,我該怎麼辦? ODBC 驅動程式管理員偵測得到這樣的問題嗎?

    答:ODBC 3.0 不會檢查連線是否有問題,它仍會傳送有問題的連線。但在 Service Pack 1 中,驅動程式管理員即可偵測發生問題的連線。 如果連接共用區中的連線失效,驅動程式管理員不但可以偵測得到,還可回傳正常的連線。如果驅動程式管理員無法建立有效的連線,即會傳回錯誤訊息。
  13. 問:有 ODBC 3.0 Service Pack 1 時,ODBC 驅動程式管理員會在伺服器沒有回應時,不斷嘗試連接資料庫伺服器嗎?

    答:ODBC 3.0 Service Pack 1 中加入了新的 API,亦即 ODBCSetTryWaitValue,以避免 ODBC 驅動程式管理員不斷嘗試連接沒有回應的伺服器。 ODBCSetTryWaitValue 藉由 DWORD 參數將資訊儲存在登錄資料中,其位置如下:
    HKEY_LOCAL_MACHINE\Software\Odbc\Odbcinst.ini \ODBC Connection Pooling\Retry Wait
    驅動程式管理員在偵測到無效的資料庫伺服器後,即會傳回錯誤訊息,並且標記連線與時間。超過 RetryWait 值所指定的時間後,驅動程式管理員即會傳回執行失敗的訊息,而不會一直嘗試重新連接該資料庫伺服器。

    如需取得更多關於如何使用 ODBCSetTryWaitValue ODBC API 的資訊,請參閱下列位於 Microsoft Knowledge Base 中的文件:
    168250 IIS Performance Degrades with a Bad Connection

?考

如需取得更多關於連接共用區及工作階段共用區 (session pooling) 的資訊,請參閱下列 Microsoft 網站中的資訊:
http://msdn2.microsoft.com/en-us/library/ms810829.aspx

?考

本文件是根據 Microsoft Knowledgebase 文件編號 Q169470 翻譯的. 若要參考原始英文文件內容, 請至以下網址:

http://support.microsoft.com/support/kb/articles/Q169/4/70.asp

屬性

文章編號: 169470 - 上次校閱: 2007年2月15日 - 版次: 1.4
這篇文章中的資訊適用於:
  • 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
關鍵字:?
kbdatabase kbgrpmdac kbgrpvcdb kbinfo kbmdac250 kbmdac260 kbodbc kboledb kbusage kbvbp KB169470
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