プーリング機能は、初期値では無効に設定されています。したがって、プーリング機能を有効にするためにアプリケーションは、コネクションを接続する前にSQLSetEnvAttr関数を発行する必要があります。また、SQLDriverConnect関数を使用して接続を行う場合は、SQL_DRIVER_NOPROMPTパラメタを指定する必要があります。さらに、ODBCドライバマネージャのプーリング機能を利用するパラメタを接続文字列に記載する必要があります。
プールされたコネクションは、同一のドライバの間でのみ再利用することができます。
ADOとの連携時にプーリング機能を利用する場合のサンプルプログラムを以下に示します。
Option Explicit Const dbconnstring = "DSN=DSN01;uid=USER01;pwd=PASS01;OLE DB Services=-2" '接続文字列 Const SQL_ATTR_CONNECTION_POOLING = 201 Const SQL_CP_ONE_PER_DRIVER = 1 Const SQL_IS_INTEGER = -6 Const SQL_CP_OFF = 0 Private Declare Function SQLSetEnvAttr Lib "odbc32.dll"( _ ByVal EnvironmentHandle As Long, _ ByVal EnvAttribute As Long, _ ByVal ValuePtr As Long, _ ByVal StringLength As Long) As Integer Private Sub Command1_Click() Dim i As Long For i = 1 To 10 Dim cn As ADODB.Connection Set cn = New ADODB.Connection cn.Open dbconnstring '切断要求されたコネクションは、プールに保存されます。 cn.Close Set cn = Nothing Next MsgBox "Connection finished" End Sub Private Sub Form_Load() Dim rc As Long 'プーリング機能を有効にします。 'これは、ADOオブジェクトを呼び出す前に行わなければなりません。 '1プロセスに付き1回発行する必要があります。 rc = SQLSetEnvAttr( 0%, _ SQL_ATTR_CONNECTION_POOLING, _ SQL_CP_ONE_PER_DRIVER, _ SQL_IS_INTEGER ) If rc <> 0 Then Debug.Print "SQLSetEnvAttr Error " & rc End If End Sub Private Sub Form_Unload(Cancel As Integer) 'プーリング機能を無効にします。 Call SQLSetEnvAttr( 0&, _ SQL_ATTR_CONNECTION_POOLING, _ SQL_CP_OFF, _ SQL_IS_INTEGER ) End Sub