Compartir a través de


Usar conversiones de cursor implícitas

Las aplicaciones pueden solicitar un tipo de cursor y, a continuación, ejecutar una instrucción Transact-SQL que no es compatible con los cursores de servidor del tipo solicitado. MicrosoftSQL Server devuelve un error que indica que el tipo de cursor ha cambiado. Esta conversión se denomina conversión de cursor implícita y, en ocasiones, degradación de cursor.

Estos son los factores que desencadenan que SQL Server convierta un cursor de un tipo a otro de forma implícita.

Paso

Conversión desencadenada por

Sólo avance

Dirigido por conjuntos de claves

Dinámico

Ir al paso

1

La cláusula FROM de la consulta no hace referencia a tablas.

Se convierte en estático.

Se convierte en estático.

Se convierte en estático.

Listo

2

La consulta contiene funciones de agregado de lista de selección GROUP BY UNION DISTINCT HAVING.

Se convierte en estático.

Se convierte en estático.

Se convierte en estático.

Listo

3

La consulta genera una tabla de trabajo interna, por ejemplo, las columnas de la cláusula ORDER BY no están cubiertas por un índice.

Se convierte en conjunto de claves.

 

Se convierte en conjunto de claves.

5

4

La consulta hace referencia a tablas remotas de servidores vinculados.

Se convierte en conjunto de claves.

 

Se convierte en conjunto de claves.

5

5

La consulta hace referencia como mínimo a una tabla sin un índice único. Sólo cursores Transact-SQL.

 

Se convierte en estático.

 

Listo

[!NOTA]

Los cursores de sólo avance no se convierten.

[!NOTA]

Los cursores de conjunto de claves y dinámicos sólo se convierten si alguna de las tablas base subyacentes no dispone de índice único o si la consulta no devuelve las columnas de clave de las tablas base directamente. Por ejemplo, si la consulta contiene funciones de agregado u operadores de conjunto.