Share via


接続属性

接続属性は、接続の特性です。 たとえば、トランザクションは接続レベルで行われるので、トランザクション分離レベルは 1 つの接続属性になります。 同様に、ログイン タイムアウト、つまり接続試行がタイムアウトするまで待機する秒数も接続属性です。

接続属性は 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) は、接続後に設定する必要があります。

その他すべての接続属性は、いつでも設定できます。 詳細については、SQLSetConnectAttr 関数の説明を参照してください。 (接続属性は、SQLSetEnvAttr への呼び出しによって、環境レベルで設定することはできません。)