Condividi tramite


Cursori fast forward only (ODBC)

Si applica a: SQL Server Database SQL di Azure Istanza gestita di SQL di Azure Azure Synapse Analytics Piattaforma di strumenti analitici (PDW)

Quando si è connessi a un'istanza di SQL Server, il driver ODBC di SQL Server Native Client supporta le ottimizzazioni delle prestazioni per i cursori forward-only di sola lettura. I cursori fast forward only vengono implementati internamente dal driver e dal server in modo molto simile ai set di risultati predefiniti. Oltre a offrire prestazioni elevate, i cursori fast forward only possono presentare anche le caratteristiche seguenti:

  • SQLGetData non è supportato. Le colonne del set di risultati devono essere associate a variabili di programma.

  • Quando viene rilevata la fine del cursore, questo viene chiuso automaticamente dal server. L'applicazione deve comunque chiamare SQLCloseCursor o SQLFreeStmt(SQL_CLOSE), ma il driver non deve inviare la richiesta di chiusura al server. In questo modo viene evitato un round trip del server nella rete.

L'applicazione richiede cursori fast forward only mediante l'attributo dell'istruzione SQL_SOPT_SS_CURSOR_OPTIONS specifica del driver. Quando l'attributo è impostato su SQL_CO_FFO, i cursori fast forward only vengono abilitati senza recupero automatico. Quando l'attributo è impostato su SQL_CO_FFO_AF, viene abilitata anche l'opzione per il recupero automatico. Per altre informazioni sul recupero automatico, vedere Uso del recupero automatico con cursori ODBC.

I cursori fast forward only con recupero automatico possono essere utilizzati per recuperare un set di risultati di piccole dimensioni con un solo round trip del server. In questi passaggi, n è il numero di righe da restituire:

  1. Impostare SQL_SOPT_SS_CURSOR_OPTIONS su SQL_CO_FFO_AF.

  2. Impostare SQL_ATTR_ROW_ARRAY_SIZE su n + 1.

  3. Associare le colonne dei risultati a matrici di n + 1 elementi (per essere sicuri se n + 1 righe vengono effettivamente recuperate).

  4. Aprire il cursore con SQLExecDirect o SQLExecute.

  5. Se lo stato restituito è SQL_SUCCESS, chiamare SQLFreeStmt o SQLCloseCursor per chiudere il cursore. Tutti i dati delle righe si troveranno nelle variabili di programma associate.

Con questi passaggi, SQLExecDirect o SQLExecute invia una richiesta di apertura del cursore con l'opzione autofetch abilitata. Nella singola richiesta proveniente dal client il server:

  • Apre il cursore.

  • Compila il set di risultati e invia le righe al client.

  • Poiché le dimensioni del set di righe sono impostate sul numero di righe del set di risultati più uno, il server rileva la fine del cursore e lo chiude.

Vedi anche

Informazioni sulla programmazione dei cursori (ODBC)