Configurare l'opzione di configurazione del server cursor thresholdConfigure the cursor threshold Server Configuration Option

QUESTO ARGOMENTO SI APPLICA A:sìSQL Server (a partire dalla versione 2008)noDatabase SQL di AzurenoAzure SQL Data Warehouse noParallel Data Warehouse THIS TOPIC APPLIES TO:yesSQL Server (starting with 2008)noAzure SQL DatabasenoAzure SQL Data Warehouse noParallel Data Warehouse

In questo argomento si illustra come configurare l'opzione di configurazione del server cursor threshold in SQL Server 2017SQL Server 2017 utilizzando SQL Server Management StudioSQL Server Management Studio o Transact-SQLTransact-SQL.This topic describes how to configure the cursor threshold server configuration option in SQL Server 2017SQL Server 2017 by using SQL Server Management StudioSQL Server Management Studio or Transact-SQLTransact-SQL. Con l'opzione cursor threshold è possibile specificare il numero delle righe del set di cursori in corrispondenza del quale i keyset del cursore vengono generati in modo asincrono.The cursor threshold option specifies the number of rows in the cursor set at which cursor keysets are generated asynchronously. Quando i cursori generano un keyset per un set di risultati, Query Optimizer produce una stima del numero di righe che verranno restituite per tale set di risultati.When cursors generate a keyset for a result set, the query optimizer estimates the number of rows that will be returned for that result set. 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.If the query optimizer estimates that the number of returned rows is greater than this threshold, the cursor is generated asynchronously, allowing the user to fetch rows from the cursor while the cursor continues to be populated. In caso contrario, il cursore viene generato in modo sincrono e la query attende che vengano restituite tutte le righe.Otherwise, the cursor is generated synchronously, and the query waits until all rows are returned.

Contenuto dell'argomentoIn This Topic

Prima di iniziare Before You Begin

Limitazioni e restrizioni Limitations and Restrictions

  • SQL ServerSQL Server non supporta la generazione asincrona di cursori Transact-SQLTransact-SQL gestiti da keyset o statici. does not support generating keyset-driven or static Transact-SQLTransact-SQL cursors asynchronously. Transact-SQLTransact-SQL , ad esempio OPEN o FETCH, vengono eseguite in batch. Non è quindi necessario generare i cursori Transact-SQLTransact-SQL in modo asincrono. cursor operations such as OPEN or FETCH are batched, so there is no need for the asynchronous generation of Transact-SQLTransact-SQL cursors. SQL ServerSQL Server supporta ancora i cursori API del server statici o gestiti da keyset asincroni nei casi in cui l'istruzione OPEN a bassa latenza costituisce un problema, a causa dei round trip del client per ogni operazione del cursore. continues to support asynchronous keyset-driven or static application programming interface (API) server cursors where low latency OPEN is a concern, due to client round trips for each cursor operation.

  • L'accuratezza con cui Query Optimizer è in grado di stimare il numero di righe in un keyset dipende dal livello di aggiornamento delle statistiche relative a tutte le tabelle del cursore.The accuracy of the query optimizer to determine an estimate for the number of rows in a keyset depends on the currency of the statistics for each of the tables in the cursor.

Indicazioni Recommendations

  • Questa opzione è avanzata e la relativa modifica è riservata ad amministratori di database esperti o a tecnici dotati di certificazione per SQL ServerSQL Server .This option is an advanced option and should be changed only by an experienced database administrator or certified SQL ServerSQL Server technician.

  • Se si imposta cursor threshold su -1, tutti i keyset vengono generati in modo sincrono, a vantaggio dei set di cursori di dimensioni ridotte.If you set cursor threshold to -1, all keysets are generated synchronously, which benefits small cursor sets. Se si imposta cursor threshold su 0, tutti i keyset dei cursori vengono generati in modo asincrono.If you set cursor threshold to 0, all cursor keysets are generated asynchronously. Se si impostano altri valori, Query Optimizer verifica il numero di righe previste nel set di cursori. Se tale numero supera il valore impostato per cursor threshold, il keyset viene compilato in modo asincrono.With other values, the query optimizer compares the number of expected rows in the cursor set and builds the keyset asynchronously if it exceeds the number set in cursor threshold. Non impostare cursor threshold su un valore troppo basso, in quanto è opportuno che i set di risultati di dimensioni ridotte vengano compilati in modo sincrono.Do not set cursor threshold too low, because small result sets are better built synchronously.

Sicurezza Security

Autorizzazioni Permissions

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.Execute permissions on sp_configure with no parameters or with only the first parameter are granted to all users by default. 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.To execute sp_configure with both parameters to change a configuration option or to run the RECONFIGURE statement, a user must be granted the ALTER SETTINGS server-level permission. L'autorizzazione ALTER SETTINGS è assegnata implicitamente ai ruoli predefiniti del server sysadmin e serveradmin .The ALTER SETTINGS permission is implicitly held by the sysadmin and serveradmin fixed server roles.

Utilizzo di SQL Server Management Studio Using SQL Server Management Studio

Per configurare l'opzione cursor thresholdTo configure the cursor threshold option

  1. In Esplora oggetti fare clic con il pulsante destro del mouse su un server e scegliere Proprietà.In Object Explorer, right-click a server and select Properties.

  2. Fare clic sul nodo Avanzate .Click the Advanced node.

  3. In Variespecificare il valore desiderato per l'opzione Cursor Threshold .Under Miscellaneous, change the Cursor Threshold option to the value you want.

Utilizzo di Transact-SQL Using Transact-SQL

Per configurare l'opzione cursor thresholdTo configure the cursor threshold option

  1. Connettersi al Motore di databaseDatabase Engine.Connect to the Motore di databaseDatabase Engine.

  2. Dalla barra Standard fare clic su Nuova query.From the Standard bar, click New Query.

  3. Copiare e incollare l'esempio seguente nella finestra Query, quindi fare clic su Esegui.Copy and paste the following example into the query window and click Execute. 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.This example shows how to use sp_configure to set the cursor threshold option to 0 so that cursor keysets are generated asynchronously.

USE AdventureWorks2012 ;  
GO  
EXEC sp_configure 'show advanced options', 1 ;  
GO  
RECONFIGURE  
GO  
EXEC sp_configure 'cursor threshold', 0 ;  
GO  
RECONFIGURE  
GO  

Per altre informazioni, vedere Opzioni di configurazione del server (SQL Server).For more information, see Server Configuration Options (SQL Server).

Completamento: Dopo la configurazione dell'opzione cursor threshold Follow Up: After you configure the cursor threshold option

L'impostazione diventa effettiva immediatamente senza dover riavviare il server.The setting takes effect immediately without restarting the server.

Vedere ancheSee Also

@@CURSOR_ROWS (Transact-SQL) @@CURSOR_ROWS (Transact-SQL)
RECONFIGURE (Transact-SQL) RECONFIGURE (Transact-SQL)
Opzioni di configurazione del server (SQL Server) Server Configuration Options (SQL Server)
sp_configure (Transact-SQL) sp_configure (Transact-SQL)
UPDATE STATISTICS (Transact-SQL)UPDATE STATISTICS (Transact-SQL)