Compartir a través de


Configuración del servidor: umbral de cursor

Se aplica a: SQL Server

En este artículo se describe cómo configurar la opción de configuración del cursor threshold servidor en SQL Server mediante SQL Server Management Studio o Transact-SQL. La cursor threshold opción especifica el número de filas del conjunto de cursores en el que se generan de forma asincrónica los conjuntos de claves de cursor. Cuando los cursores generan un conjunto de claves para un conjunto de resultados, el optimizador de consultas calcula el número de filas que se devuelven para ese conjunto de resultados. Si el optimizador de consultas calcula que el número de filas devuelto es superior a este umbral, el cursor se genera de manera asincrónica, lo que permite al usuario capturar las filas del cursor mientras sigue llenándose. De lo contrario, el cursor se genera de manera sincrónica y la consulta espera a que se devuelvan todas las filas.

Limitaciones

SQL Server no admite la generación de cursores estáticos controlados por conjuntos de claves ni estáticos de Transact-SQL de forma asincrónica. Las operaciones de cursor de Transact-SQL como OPEN o FETCH se procesan por lotes, por lo que no es necesario la generación asincrónica de cursores de Transact-SQL. SQL Server sigue admitiendo cursores de servidor de interfaz de programación de aplicaciones estáticas o controladas por conjuntos de claves asincrónicas en las que la baja latencia OPEN es un problema, debido a los recorridos de ida y vuelta del cliente para cada operación de cursor.

La precisión del optimizador de consultas para determinar una estimación del número de filas de un conjunto de claves depende del grado de actualización de las estadísticas de cada una de las tablas del cursor.

Recomendaciones

Esta opción es avanzada y solo debe cambiarla un administrador de base de datos con experiencia o un profesional certificado de SQL Server.

Si establece cursor threshold -1en , todos los conjuntos de claves se generan de forma sincrónica, lo que beneficia a los conjuntos de cursores pequeños. Si establece cursor threshold 0en , todos los conjuntos de claves de cursor se generan de forma asincrónica. Con otros valores, el optimizador de consultas compara el número de filas esperadas en el conjunto de cursores y compila el conjunto de claves de forma asincrónica si supera el número establecido en cursor threshold. No establezca cursor threshold demasiado bajo, ya que los conjuntos de resultados pequeños se crean mejor de forma sincrónica.

Permisos

De forma predeterminada, todos los usuarios tienen permisos de ejecución en sp_configure sin ningún parámetro o solo con el primero. Para ejecutar sp_configure con ambos parámetros y cambiar una opción de configuración, o para ejecutar la instrucción RECONFIGURE, un usuario debe tener el permiso ALTER SETTINGS en el servidor. Los roles fijos de servidor sysadmin y serveradmin tienen el permiso ALTER SETTINGS de forma implícita.

Usar SQL Server Management Studio

  1. En el Explorador de objetos, haga clic con el botón derecho en un servidor y seleccione Propiedades.

  2. Seleccione el nodo Avanzado.

  3. En Varios, cambie la cursor threshold opción al valor que desee.

Uso de Transact-SQL

  1. Conéctese con el Motor de base de datos.

  2. En la barra Estándar, seleccione Nueva consulta.

  3. Copie y pegue el ejemplo siguiente en la ventana de consulta y seleccione Ejecutar. En este ejemplo se muestra cómo usar sp_configure para establecer la opción de cursor threshold en 0 con el fin de generar conjuntos de claves del cursor de forma asincrónica.

    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
    

Para obtener más información, vea Opciones de configuración de servidor.

Seguimiento: Después de configurar la opción de umbral de cursor

La configuración surte efecto inmediatamente, sin necesidad de reiniciar el servidor.