連接屬性

連線屬性是連線的特性。 例如,因為交易發生在連接層級,所以交易隔離等級是連接屬性。 同樣地,登入逾時 (也就是要在嘗試連線時,在逾時之前等候的秒數) 也是連線屬性。

連線屬性是使用 SQLSetConnectAttr 設定的,而其目前的設定則會藉由 SQLGetConnectAttr 來擷取。 如果在驅動程式載入之前呼叫 SQLSetConnectAttr,則驅動程式管理員會將屬性儲存在其連線結構中,並在連線流程中在驅動程式內設定這些屬性。 應用程式不需要設定任何連線屬性;所有連線屬性都有預設值,有些是驅動程式專屬的。

連線屬性可在連線前或連線後設定,設定的時機依屬性和驅動程式而定。 登入逾時 (SQL_ATTR_LOGIN_TIMEOUT) 適用於連線流程,但必須在連線前設定才能生效。 指定是否使用 ODBC 資料指標程式庫 (SQL_ATTR_ODBC_CURSORS) 與網路封包大小 (SQL_ATTR_PACKET_SIZE) 的屬性必須在連線之前設定,因為 ODBC 資料指標程式庫位於驅動程式管理員和驅動程式之間,必須在驅動程式之前載入。

指定資料來源是唯讀或讀寫 (SQL_ATTR_ACCESS_MODE) 以及目前目錄 (SQL_ATTR_CURRENT_CATALOG) 的屬性可在連線前或連線後設定,視驅動程式而定。 不過,互通的應用程式會在連線前設定之,因為部分驅動程式不支援在連線後予以變更。

有些連線屬性會在連線前具備預設值,有些則不然。 具備預設值的屬性為:SQL_ATTR_ACCESS_MODE、SQL_ATTR_AUTOCOMMIT、SQL_ATTR_LOGIN_TIMEOUT、SQL_ATTR_ODBC_CURSORS、SQL_ATTR_TRACE 和 SQL_ATTR_TRACEFILE。

編譯連線屬性 (SQL_ATTR_TRANSLATE_DLL 和 SQL_ATTR_TRANSLATE_OPTION) 必須在連線之後設定。

其他所有連線屬性的設定時機沒有限制。 如需詳細資訊,請參閱 SQL SetConnectAttr 函式說明。 (環境等級的連線屬性無法透過呼叫 SQLSetEnvAttr 來設定。)