Allocazione di un handle di istruzione

Si applica a: sìSQL Server (tutte le versioni supportate) Sìdatabase SQL di Azure SìIstanza gestita di SQL di Azure sìAzure Synapse Analytics sìParallel Data Warehouse

Prima che un'applicazione possa eseguire un'istruzione, deve allocare un handle di istruzione. A tale scopo, chiama SQLAllocHandle con il parametro HandleType impostato su SQL_HANDLE_STMT e InputHandle che punta a un handle di connessione.

Gli attributi di istruzione sono caratteristiche dell'handle di istruzione. Attributi di istruzione di esempio possono includere l'utilizzo di segnalibri e il tipo di cursore da utilizzare con il set di risultati dell'istruzione. Gli attributi dell'istruzione vengono impostati con SQLSetStmtAttre le relative impostazioni correnti vengono recuperate tramite SQLGetStmtAttr. Non vi è alcun requisito che stabilisce che un'applicazione debba impostare tutti gli attributi di istruzione. Per tutti gli attributi di istruzione sono disponibili valori predefiniti, alcuni dei quali specifici del driver.

Prestare particolare attenzione nell'utilizzare molte delle opzioni di istruzione e connessione ODBC. La chiamata a SQLSetConnectAttr con fOption impostato su SQL_ATTR_LOGIN_TIMEOUT controlla il tempo di attesa di un'applicazione per il timeout di un tentativo di connessione durante l'attesa di stabilire una connessione (0 specifica un'attesa infinita). Per i siti con tempi di risposta prolungati è possibile impostare un valore elevato per garantire che le connessioni dispongano di tempo sufficiente per il completamento. L'intervallo, tuttavia, deve essere sempre sufficientemente ridotto per consentire all'utente di ricevere una risposta entro un periodo di tempo ragionevole se il driver non è in grado di connettersi.

Chiamando SQLSetStmtAttr con fOption impostato su SQL_ATTR_QUERY_TIMEOUT imposta un intervallo di timeout della query per proteggere il server e l'utente dalle query con esecuzione di lunga durata.

La chiamata di SQLSetStmtAttr con fOption impostato su SQL_ATTR_MAX_LENGTH limita la quantità di dati di tipo text e image che una singola istruzione può recuperare. La chiamata di SQLSetStmtAttr con fOption impostato su SQL_ATTR_MAX_ROWS limita anche un set di righe alle prime n righe se è tutto ciò che l'applicazione richiede. Si noti che impostando SQL_ATTR_MAX_ROWS, il driver esegue un'istruzione SET ROWCOUNT nel server. Questo influisce Microsoft SQL Server su tutte le istruzioni, inclusi i trigger e gli aggiornamenti.

Utilizzare particolare attenzione quando si impostano queste opzioni. È preferibile che tutti gli handle di istruzione in un handle di connessione specifichino le stesse impostazioni per SQL_ATTR_MAX_LENGTH e SQL_ATTR_MAX_ROWS. Se il driver passa da un handle di istruzione a un altro con valori diversi per queste opzioni, il driver deve generare le istruzioni SET TEXTSIZE e SET ROWCOUNT appropriate per modificare le impostazioni. Il driver non può inserire queste istruzioni nello stesso batch dell'istruzione SQL dell'utente perché l'istruzione SQL dell'utente può contenere un'istruzione che deve essere la prima in un batch. Il driver deve inviare le istruzioni SET TEXTSIZE e SET ROWCOUNT in un batch distinto, che genera automaticamente un round trip aggiuntivo al server.

Vedere anche

Esecuzione di query (odbc)