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