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. Microsoft SQL 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.