ODBC 游标库

适用于:SQL Server Azure SQL 数据库 Azure SQL 托管实例 Azure Synapse Analytics Analytics 平台系统(PDW)

某些 ODBC 驱动程序仅支持默认游标设置;这些驱动程序也不支持定位游标操作,例如 SQLSetPos。 ODBC 游标库是用于对通常不支持块状游标或静态游标的驱动程序实现这些游标的 Microsoft 数据访问组件 (MDAC) 的组件。 游标库还实现其创建的游标的定位 UPDATE 和 DELETE 语句和 SQLSetPos

ODBC 游标库作为 ODBC 驱动程序管理器和 ODBC 驱动程序之间的层实现。 如果加载 ODBC 游标库,ODBC 驱动程序管理器则将与游标相关的所有命令路由到该游标库,而不是驱动程序。 游标库通过从基础驱动程序提取整个结果集并将此结果集缓存到客户端来实现游标。 当使用 ODBC 游标库时,应用程序仅限于该游标库的游标功能;对基础驱动程序中的其他游标功能的支持不可用于该应用程序。

无需将 ODBC 游标库与 SQL Server Native Client ODBC 驱动程序配合使用,因为驱动程序本身支持的游标功能比 ODBC 游标库多。 将 ODBC 游标库用于 SQL Server Native Client ODBC 驱动程序的唯一原因是驱动程序通过服务器游标实现其游标支持,并且服务器游标不支持所有 SQL 语句。 如果需要配合使用静态游标和存储过程、批处理或包含 COMPUTE、COMPUTE BY、FOR BROWSE 或 INTO 的 SQL 语句,请考虑使用 ODBC 游标库。 但是,使用游标库时应非常小心,因为它在客户端上缓存整个结果集,这可能占用大量内存并降低性能。

应用程序通过使用 SQLSetConnectAttr 在连接到数据源之前设置SQL_ATTR_ODBC_CURSORS连接属性,以逐个连接方式调用游标库。 SQL_ATTR_ODBC_CURSORS 设置为下列三个值之一:

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 驱动程序支持 SQLFetchScrollSQL_FETCH_PRIOR选项。 如果驱动程序不支持此选项,ODBC 驱动程序管理器则加载 ODBC 游标库。 如果驱动程序支持此选项,ODBC 驱动程序管理器则不加载 ODBC 游标库,应用程序将使用该驱动程序的本机支持。 由于 SQL Server Native Client ODBC 驱动程序支持SQL_FETCH_PRIOR,因此 ODBC 驱动程序管理器不会加载 ODBC 游标库。

游标库允许应用程序对一个连接使用多个活动语句,以及可滚动、可更新的游标。 必须加载游标库以支持该功能。 使用 SQLSetConnectAttr 指定应如何使用游标库,使用 SQLSetStmtAttr 指定游标类型、并发性和行集大小。

另请参阅

如何实现游标