Configurazione del server: soglia cursore

Si applica a:SQL Server

Questo articolo descrive come configurare l'opzione di configurazione del cursor threshold server in SQL Server usando SQL Server Management Studio o Transact-SQL. L'opzione cursor threshold specifica il numero di righe nel set di cursori in corrispondenza del quale i set di tasti di cursore vengono generati in modo asincrono. Quando i cursori generano un keyset per un set di risultati, Query Optimizer stima il numero di righe restituite per tale set di risultati. Se il numero stimato di righe restituite supera la soglia, il cursore viene generato in modo asincrono ed è pertanto possibile recuperare le righe dal cursore durante il popolamento del cursore stesso. In caso contrario, il cursore viene generato in modo sincrono e la query attende che vengano restituite tutte le righe.

Limiti

SQL Server non supporta la generazione asincrona di cursori Transact-SQL basati su keyset o statici. Le operazioni di cursore Transact-SQL, OPEN ad esempio o FETCH vengono raggruppate, pertanto non è necessario generare in modo asincrono i cursori Transact-SQL. SQL Server continua a supportare cursori server dell'interfaccia di programmazione delle applicazioni (API) asincroni di tipo keyset-driven o statici quando è richiesta una bassa latenza OPEN, a causa dei tempi di andata e ritorno tra client e server per ogni operazione del cursore.

L'accuratezza con cui il Query Optimizer è in grado di stimare il numero di righe in un keyset dipende dal livello di aggiornamento delle statistiche per ognuna delle tabelle nel cursore.

Consigli

Questa opzione è un'opzione avanzata e deve essere modificata solo da un professionista esperto del database.

Se si imposta su cursor threshold-1, tutti i set di chiavi vengono generati in modo sincrono, con vantaggi per i set di cursori di piccole dimensioni. Se si imposta cursor threshold su 0, tutti i gruppi di tasti cursore vengono generati asincronamente. Con altri valori, Query Optimizer confronta il numero di righe previste nel set di cursori e compila il keyset in modo asincrono se supera il numero impostato in cursor threshold. Non impostare cursor threshold su un valore troppo basso, perché per insiemi di risultati di piccole dimensioni è preferibile una generazione sincrona.

Autorizzazioni

Le autorizzazioni di esecuzione per sp_configure senza alcun parametro o solo con il primo parametro vengono assegnate per impostazione predefinita a tutti gli utenti. Per eseguire sp_configure con entrambi i parametri per la modifica di un'opzione di configurazione o per l'esecuzione dell'istruzione RECONFIGURE, a un utente deve essere concessa l'autorizzazione a livello di server ALTER SETTINGS. L'autorizzazione ALTER SETTINGS è assegnata implicitamente ai ruoli predefiniti del serversysadmin e serveradmin.

Usa SQL Server Management Studio

  1. In Esplora oggetti fare clic con il pulsante destro del mouse su un server e scegliere Proprietà.

  2. Selezionare il nodo Avanzate.

  3. In Varie modificare l'opzione cursor threshold sul valore desiderato.

Usare Transact-SQL

  1. Connettersi al Motore di database.

  2. Nella barra Standard selezionare Nuova query.

  3. Copiare e incollare l'esempio seguente nella finestra di query e selezionare Esegui. Questo esempio mostra come usare sp_configure per impostare l'opzione cursor threshold su 0 in modo che i keyset del cursore vengano generati in modo asincrono.

    USE master;
    GO
    
    EXECUTE sp_configure 'show advanced options', 1;
    GO
    
    RECONFIGURE;
    GO
    
    EXECUTE sp_configure 'cursor threshold', 0;
    GO
    
    RECONFIGURE;
    GO
    
    EXECUTE sp_configure 'show advanced options', 0;
    GO
    
    RECONFIGURE;
    GO
    

Per altre informazioni, vedere Opzioni di configurazione del server.

Completamento: Dopo aver configurato l'opzione di soglia del cursore

L'impostazione diventa effettiva immediatamente senza dover riavviare il server.