Freigeben über


ODBC-Cursorbibliothek

Gilt für: SQL Server Azure SQL-Datenbank Azure SQL verwaltete Instanz Azure Synapse Analytics Analytics Platform System (PDW)

Einige ODBC-Treiber unterstützen nur die Standardcursoreinstellungen; Diese Treiber unterstützen auch keine positionierten Cursorvorgänge, z . B. SQLSetPos. Die ODBC-Cursorbibliothek ist eine Komponente von Microsoft Data Access Components (MDAC), mit der Block- oder statische Cursor in einem Treiber implementiert werden, der sie normalerweise nicht unterstützt. Die Cursorbibliothek implementiert außerdem positionierte UPDATE- und DELETE-Anweisungen und SQLSetPos für die von ihr erstellten Cursor.

Die ODBC-Cursorbibliothek wird als Ebene zwischen dem ODBC-Treiber-Manager und einem ODBC-Treiber implementiert. Wenn die ODBC-Cursorbibliothek geladen ist, leitet der ODBC-Treiber-Manager alle cursorspezifischen Befehle an die Cursorbibliothek statt an den Treiber weiter. Die Cursorbibliothek implementiert einen Cursor durch Abrufen des gesamten Resultsets aus dem zugrunde liegenden Treiber und durch Zwischenspeichern des Resultsets auf dem Client. Bei Verwendung der ODBC-Cursorbibliothek ist die Anwendung auf die Cursorfunktionen der Cursorbibliothek beschränkt. Zusätzliche Cursorfunktionen im zugrunde liegenden Treiber sind für die Anwendung nicht verfügbar.

Es ist wenig erforderlich, die ODBC-Cursorbibliothek mit dem SQL Server Native Client ODBC-Treiber zu verwenden, da der Treiber selbst mehr Cursorfunktionen unterstützt als die ODBC-Cursorbibliothek. Der einzige Grund für die Verwendung der ODBC-Cursorbibliothek mit dem SQL Server Native Client ODBC-Treiber besteht darin, dass der Treiber seine Cursorunterstützung über Servercursor implementiert, und Servercursor unterstützen nicht alle SQL-Anweisungen. Erwägen Sie die Verwendung der ODBC-Cursorbibliothek, wenn ein statischer Cursor mit gespeicherten Prozeduren, Batches oder SLQ-Anweisungen, die COMPUTE, COMPUTE BY, FOR BROWSE oder INTO enthalten, erforderlich ist. Gehen Sie mit der Cursorbibliothek jedoch sorgfältig um, da sie das gesamte Resultset auf dem Client zwischenspeichert und dadurch viel Speicherplatz belegt und die Leistung beeinträchtigt werden kann.

Eine Anwendung ruft die Cursorbibliothek auf Verbindungsbasis mithilfe von SQLSetConnectAttr auf, um das SQL_ATTR_ODBC_CURSORS Verbindungsattribut festzulegen, bevor eine Verbindung mit einer Datenquelle hergestellt wird. SQL_ATTR_ODBC_CURSORS wird auf einen von drei Werten festgelegt:

SQL_CUR_USE_ODBC
Wenn diese Option mit dem SQL Server Native Client ODBC-Treiber festgelegt wird, überschreibt die ODBC-Cursorbibliothek die systemeigene Unterstützung des SQL Server Native Client ODBC-Treibers. Für die Verbindung können nur von der Cursorbibliothek unterstützte Cursortypen verwendet werden. Servercursor können nicht verwendet werden.

SQL_CUR_USE_DRIVER
Wenn diese Option festgelegt ist, kann der gesamte Cursor native Unterstützung für den SQL Server Native Client ODBC-Treiber für die Verbindung verwendet werden. Die ODBC-Cursorbibliothek kann nicht verwendet werden. Alle Cursor werden als Servercursor implementiert.

SQL_CUR_USE_IF_NEEDED
Wenn diese Option festgelegt ist, entspricht der Effekt SQL_CUR_USE_DRIVER bei Verwendung mit dem ODBC-Treiber von SQL Server Native Client. Zur Verbindungszeit testet der ODBC-Treiber-Manager, ob der ODBC-Treiber, der mit der Verbindung verbunden ist, die SQL_FETCH_PRIOR Option von SQLFetchScroll unterstützt. Wenn der Treiber die Option nicht unterstützt, lädt der ODBC-Treiber-Manager die ODBC-Cursorbibliothek. Unterstützt der Treiber die Option, so lädt der ODBC-Treiber-Manager die ODBC-Cursorbibliothek nicht und die Anwendung verwendet die systemeigene Unterstützung des Treibers. Da der ODBC-Treiber von SQL Server Native Client SQL_FETCH_PRIOR unterstützt, lädt der ODBC-Treiber-Manager die ODBC-Cursorbibliothek nicht.

Die Cursorbibliothek ermöglicht Anwendungen, mehrere aktive Anwendungen für eine Verbindung sowie bildlauffähige und aktualisierbare Cursor zu verwenden. Die Cursorbibliothek muss geladen sein, damit diese Funktion unterstützt wird. Verwenden Sie SQLSetConnectAttr , um anzugeben, wie die Cursorbibliothek verwendet werden soll, und SQLSetStmtAttr , um den Cursortyp, die Parallelität und die Zeilensatzgröße anzugeben.

Weitere Informationen

Implementieren von Cursorn