資訊: 如何啟用連接共用在 ODBC 應用程式

文章翻譯 文章翻譯
文章編號: 164221 - 檢視此文章適用的產品。
全部展開 | 全部摺疊

結論

本文將告訴您,如何啟用連接共用 ODBC 應用程式中。

其他相關資訊

Microsoft ODBC 版本 3.0 引進了連接共用的概念。
連接共用區讓 ODBC 應用程式可以重複使用現有的
因此 ODBC 應用程式並沒有移一個資料庫的連線
透過完整的連線程序的任何後續的連線。

當 ODBC 應用程式中斷連線時,儲存連線
到而非實際的集區中斷連線。多久這個連線會保持
集區中而定的 ODBC 驅動程式的 [CPTimeout] 屬性。 當
逾時過期,連接會關閉,並從集區中移除。[ODBC
應用程式可以使用 SQLConfigDriver 變更 CPTimeout,值和這
值適用於使用指定的 ODBC 驅動程式的所有 ODBC 應用程式。

[CPTimeout 預設值為 60 秒。 連接共用是非常有用,當 ODBC 應用程式,像是 Microsoft 網際網路
資訊伺服器 (例如) 連線,而且經常會中斷連線。Microsoft
網際網路資訊伺服器 (IIS) 版本 3.0 動態伺服器網頁 (ASP)
充分利用連接共用。您可以啟用連接共用的
IIS 使用者 StartConnectionPool 的值改成 1。StartConnectionPool 位於之下:
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\W3SVC\ASP\Parameters
ODBC 應用程式可以使用 SQLSetEnvAttr 啟用連接共用。下列是如何啟用連接共用 ODBC 應用程式中的範例:
   #include <windows.h>
   #include <stdio.h>
   #include <sql.h>
   #include <sqlext.h>

   void main()
   {
   SQLHENV   henv;
   SQLHDBC   hdbc;
   int       i=0;

   if (!SQL_SUCCEEDED(SQLSetEnvAttr(
      NULL,  // make process level cursor pooling
      SQL_ATTR_CONNECTION_POOLING,
      (SQLPOINTER)SQL_CP_ONE_PER_DRIVER,
      SQL_IS_INTEGER)))
   printf("SQLSetEnvAttr/SQL_ATTR_CONNECTION_POOLING error\n");

   if (!SQL_SUCCEEDED(SQLAllocHandle(SQL_HANDLE_ENV, NULL, &henv)))
      printf("SQLAllocHandle error\n");

   // set the ODBC behavior version.
   if (!SQL_SUCCEEDED(SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION,
   (SQLPOINTER) SQL_OV_ODBC2, SQL_IS_INTEGER)))
      printf("SQLSetEnvAttr/SQL_ATTR_ODBC_VERSION error\n");

   //set the matching condition for using an existing connection in the
   pool
   if (!SQL_SUCCEEDED(SQLSetEnvAttr(henv, SQL_ATTR_CP_MATCH,
   (SQLPOINTER) SQL_CP_RELAXED_MATCH, SQL_IS_INTEGER)))
   printf("SQLSetEnvAttr/SQL_ATTR_CP_MATCH error\n");

while (i < 10) {
   if (!SQL_SUCCEEDED(SQLAllocHandle(SQL_HANDLE_DBC,
      henv, &hdbc)))
      printf("SQLAllocHandle error\n");
      if (!SQL_SUCCEEDED(SQLConnect(hdbc,
   (unsigned char*)"testing\0", SQL_NTS,
      (unsigned char*)"sa\0", SQL_NTS,
   (unsigned char*)"\0", SQL_NTS)))
      printf("SQLConnect error\n");
   else
      printf("Connect successfully %d times\n", i);
   //the first time, the application calls SQLDisconenct, it will return
                 //the connection to the //pool
   SQLDisconnect(hdbc);

   if (!SQL_SUCCEEDED(SQLFreeHandle(SQL_HANDLE_DBC, hdbc)))
      printf("SQLFreeHandle error\n");
   i++;
   }
   SQLFreeHandle(SQL_HANDLE_ENV, henv);
   }
				
時 [ODBC 應用程式呼叫 SQLDisconnect 第一次,連接儲存到集區。任何後續 SQLConnect/SQLDisconnect 符合必要的條件將重複使用第一個連線。

屬性

文章編號: 164221 - 上次校閱: 2000年7月7日 - 版次: 1.0
這篇文章中的資訊適用於:
  • Microsoft Open Database Connectivity 3.0
關鍵字:?
kbmt kbinfo kbprogramming KB164221 KbMtzh
機器翻譯
重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。
按一下這裡查看此文章的英文版本:164221
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。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