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

重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。

按一下這裡查看此文章的英文版本:164221
依現狀不再更新的知識庫內容免責聲明
本文旨在說明 Microsoft 不再提供支援的產品。因此,本文係依「現狀」提供,不會再更新。
結論
本文將告訴您,如何啟用連接共用 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 符合必要的條件將重複使用第一個連線。
viper ASP

警告:本文為自動翻譯

属性

文章 ID:164221 - 上次审阅时间:07/07/2000 08:29:00 - 修订版本: 1.0

Microsoft Open Database Connectivity 3.0

  • kbmt kbinfo kbprogramming KB164221 KbMtzh
反馈