可感知驅動程式的連接共用
驅動程式感知連線共用是 Windows 8 驅動程式管理員的新功能。 驅動程式感知連線共用可讓驅動程式寫入器自訂其 ODBC 驅動程式中的連線共用行為。
注意
資料指標程式庫不支援驅動程式感知連線共用。 如果應用程式嘗試透過 SQLSetConnectAttr 啟用資料指標程式庫,則啟用驅動程式感知連線共用時會收到錯誤訊息。
驅動程式感知連線共用可解決與驅動程式管理員連接共用相關的下列問題:
集區片段:如果連線與新連線要求的連接字串完全相符,驅動程式管理員才從集區傳回連線。 驅動程式管理員會要求完全相符的原因之一,是因為驅動程式管理員並不瞭解每個驅動程式專屬的連接字串關鍵字及其值。 不過,某些連接字串關鍵字的值 (例如資料庫名稱) 可能不需要完全相符,因為驅動程式變更資料庫的速度,能短於開啟新連接所需的時間 (確切的時間差異取決於資料來源)。 此外,某些連接屬性的差異 (例如 SQL_ATTR_CURRENT_CATALOG) 所需的變更時間,可能會比其他屬性 (例如SQL_ATTR_LOGIN_TIMEOUT) 的差異更久。 這也可能會導致驅動程式管理員無法使用集區內成本最低且可重複使用的連線。 當驅動程式必須建立許多新的連線時,應用程式的效能可能會降低,而且資料來源可擴縮性可能會減少。 使用驅動程式感知連線共用可減少集區片段,因為驅動程式能更確實地估計連線要求重複使用集區內連線的成本。
不考慮應用程式喜好設定:某些資料來源可以有效率地開啟新的連線 (相較於重設某些屬性),因此應用程式可能會偏好開啟新的連線,而不是嘗試重複使用集區中稍不相符的連線並重設某些值 (雖然在連線集區初始化片語期間可能會較慢)。 但有些應用程式可能會讓伺服器維持在較小負載,且開啟的連線較少,雖然修正不相符之處以達到正確行為的成本可能較高。 如果沒有驅動程式感知連線共用,就無法有效指定這種喜好設定,因為驅動程式管理員無法辨識所有驅動程式專屬的連線屬性。 驅動程式感知連線共用可讓驅動程式取得使用者喜好設定 (藉由 SQLSetConnectAttr 的驅動程式專屬屬性),以便根據使用者的喜好設定,更確實估計從集區重複使用連線的成本。
如需驅動程式感知連線共用的詳細資訊,請參閱在 ODBC 驅動程式中開發連線集區覺察。
判斷驅動程式支援
驅動程式感知連線共用屬於選擇性功能,驅動程式可能不支援。 若要判斷驅動程式是否支援,請使用 SQLGetInfo 的 SQL_DRIVER_AWARE_POOLING_SUPPORTED InfoType。
如何啟用驅動程式感知連線共用
應用程式可以使用驅動程式的連線共用感知,方法是將 SQL_ATTR_CONNECTION_POOLING 屬性設定為具有 SQLSetEnvAttr 的 SQL_CP_DRIVER_AWARE。 如果驅動程式不支援連線集區感知,則會使用驅動程式管理員連線共用 (如果已指定 SQL_CP_ONE_PER_HENV 則相同,而不是 SQL_CP_DRIVER_AWARE)。 ODBC 2.x 和 3.x 應用程式可以啟用此功能。