一部の ODBC ドライバーでは、既定のカーソル設定のみがサポートされます。これらのドライバーは、 SQLSetPos などの位置指定されたカーソル操作もサポートしていません。 ODBC カーソル ライブラリは、Microsoft Data Access Components (MDAC) のコンポーネントであり、通常はサポートされていないドライバーにブロック カーソルまたは静的カーソルを実装するために使用されます。 カーソル ライブラリには、位置指定された UPDATE ステートメントと DELETE ステートメント、および作成するカーソルの SQLSetPos も実装されます。
ODBC カーソル ライブラリは、ODBC ドライバー マネージャーと ODBC ドライバーの間のレイヤーとして実装されます。 ODBC カーソル ライブラリが読み込まれている場合、ODBC ドライバー マネージャーは、カーソル関連のすべてのコマンドをドライバーの代わりにカーソル ライブラリにルーティングします。 カーソル ライブラリは、基になるドライバーから結果セット全体をフェッチし、クライアントで結果セットをキャッシュすることによって、カーソルを実装します。 ODBC カーソル ライブラリを使用する場合、アプリケーションはカーソル ライブラリのカーソル機能に制限されます。基になるドライバーの追加カーソル機能のサポートは、アプリケーションでは使用できません。
ドライバー自体は ODBC カーソル ライブラリよりも多くのカーソル機能をサポートしているため、SQL Server Native Client ODBC ドライバーで ODBC カーソル ライブラリを使用する必要はほとんどありません。 SQL Server Native Client ODBC ドライバーで ODBC カーソル ライブラリを使用する唯一の理由は、ドライバーがサーバー カーソルを介してカーソルのサポートを実装し、サーバー カーソルがすべての SQL ステートメントをサポートしていないためです。 COMPUTE、COMPUTE BY、FOR BROWSE、または INTO を含むストアド プロシージャ、バッチ、または SQL ステートメントを含む静的カーソルが必要な場合は、ODBC カーソル ライブラリの使用を検討してください。 ただし、カーソル ライブラリでは結果セット全体がクライアントにキャッシュされるため、大量のメモリを使用してパフォーマンスが低下する可能性があるため、注意が必要です。
アプリケーションは、 SQLSetConnectAttr を使用して接続ごとにカーソル ライブラリを呼び出し、データ ソースに接続する前にSQL_ATTR_ODBC_CURSORS接続属性を設定します。 SQL_ATTR_ODBC_CURSORSは、次の 3 つの値のいずれかに設定されます。
SQL_CUR_USE_ODBC
このオプションを SQL Server Native Client ODBC ドライバーで設定すると、ODBC カーソル ライブラリによって SQL Server Native Client ODBC ドライバーのネイティブ カーソル サポートがオーバーライドされます。 接続には、カーソル ライブラリでサポートされているカーソルの種類のみを使用できます。サーバー カーソルを使用できません。
SQL_CUR_USE_DRIVER
このオプションを設定すると、すべてのカーソルが SQL Server Native Client ODBC ドライバーにネイティブでサポートされ、接続に使用できます。 ODBC カーソル ライブラリは使用できません。 すべてのカーソルはサーバー カーソルとして実装されます。
SQL_CUR_USE_IF_NEEDED
このオプションを設定すると、SQL Server Native Client ODBC ドライバーで使用した場合の効果はSQL_CUR_USE_DRIVERと同じです。 接続時に、ODBC ドライバー マネージャーは、接続されている ODBC ドライバーが SQLFetchScroll の SQL_FETCH_PRIOR オプションをサポートしているかどうかをテストします。 ドライバーがオプションをサポートしていない場合、ODBC ドライバー マネージャーは ODBC カーソル ライブラリを読み込みます。 ドライバーでオプションがサポートされている場合、ODBC ドライバー マネージャーは ODBC カーソル ライブラリを読み込まず、アプリケーションはドライバーのネイティブ サポートを使用します。 SQL Server Native Client ODBC ドライバーはSQL_FETCH_PRIORをサポートしているため、ODBC ドライバー マネージャーは ODBC カーソル ライブラリを読み込まれません。
カーソル ライブラリを使用すると、アプリケーションは、1 つの接続で複数のアクティブなステートメントを使用できるだけでなく、スクロール可能で更新可能なカーソルも使用できます。 この機能をサポートするには、カーソル ライブラリを読み込む必要があります。 SQLSetConnectAttr を使用してカーソル ライブラリの使用方法を指定し、SQLSetStmtAttr を使用してカーソルの種類、コンカレンシー、および行セット のサイズを指定します。