接続ハンドルの割り当て
アプリケーションからデータ ソースまたはドライバに接続する前に、接続ハンドルを割り当てる必要があります。接続ハンドルを割り当てるには、HandleType パラメータを SQL_HANDLE_DBC に設定し、InputHandle が初期化済みの環境ハンドルを指すように設定して SQLAllocHandle を呼び出します。
接続の特性は、接続属性の設定により制御されます。たとえば、トランザクションは接続レベルで行われるので、トランザクション分離レベルは 1 つの接続属性になります。同様に、ログイン タイムアウト、つまり接続試行がタイムアウトするまで待機する秒数も接続属性です。
接続属性は SQLSetConnectAttr を使用して設定し、現在の接続属性の設定は SQLGetConnectAttr を使用して取得します。接続を試行する前に SQLSetConnectAttr を呼び出すと、ODBC ドライバ マネージャでは、属性をドライバ マネージャの接続構造に格納し、接続処理の一環としてドライバに設定します。接続属性の中には、アプリケーションが接続を試行する前に設定しなければならないものも、接続の確立後に設定できるものもあります。たとえば、SQL_ATTR_ODBC_CURSORS は接続前に設定する必要がありますが、SQL_ATTR_AUTOCOMMIT は接続後に設定できます。
SQL Server 7.0 以降に対してアプリケーションを実行している場合、表形式のデータ ストリーム (TDS) のネットワーク パケット サイズを再設定すると、パフォーマンスが向上することがあります。サーバーに設定されている既定のパケット サイズは 4 KB です。パフォーマンスが最も高くなるのは、通常、パケット サイズが 4 ~ 8 KB のときです。テストにより、他のパケット サイズの方がパフォーマンスが高くなることがわかった場合、アプリケーションではパケット サイズを再設定できます。ODBC アプリケーションでは、接続前に SQL_ATTR_PACKET_SIZE オプションを使用して SQLSetConnectAttr を呼び出すことで、再設定を実行できます。パケット サイズを大きくすることでパフォーマンスが向上するアプリケーションもありますが、通常、8 KB を超えるパケット サイズを指定して向上するパフォーマンスはごくわずかです。
SQL Server Native Client ODBC ドライバには、アプリケーションの機能を強化するために使用できる多くの拡張接続属性が用意されています。拡張属性の一部にはデータ ソースで指定されるオプションと同じものを制御するものがあります。このような属性を使用すると、常に、データ ソースで設定されたオプションよりも、拡張属性のオプションが優先されます。たとえば、アプリケーションで引用符で囲まれた識別子を使用する場合は、ドライバ固有の属性である SQL_COPT_SS_QUOTED_IDENT を SQL_QI_ON に設定すると、データ ソースの設定とは関係なく、識別子を引用符で囲むというオプションが常に有効になります。