Share via


ODBC-Cursorbibliothek

Gilt für:SQL ServerAzure SQL-DatenbankAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics 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 auch positionierte UPDATE- und DELETE-Anweisungen sowie 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 als die ODBC-Cursorbibliothek unterstützt. Der einzige Grund für die Verwendung der ODBC-Cursorbibliothek mit dem SQL Server Native Client ODBC-Treiber ist, dass der Treiber seine Cursorunterstützung über Servercursor implementiert und Servercursor nicht alle SQL-Anweisungen unterstützen. 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 auf, indem SQLSetConnectAttr verwendet wird, 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 ist, überschreibt die ODBC-Cursorbibliothek die native Cursorunterstü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 die gesamte Cursorunterstützung nativ 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, ist der Effekt identisch mit SQL_CUR_USE_DRIVER, wenn sie mit dem SQL Server Native Client ODBC-Treiber verwendet wird. Bei der Verbindung testet der ODBC-Treiber-Manager, ob der ODBC-Treiber, mit dem eine Verbindung hergestellt wird, die option SQL_FETCH_PRIOR 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 SQL Server Native Client ODBC-Treiber 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 Rowsetgröße anzugeben.

Weitere Informationen

Implementieren von Cursorn