Utilisation des conversions implicites de curseurs

Les applications peuvent demander un type de curseur donné et exécuter ensuite une instruction Transact-SQL qui n'est pas prise en charge par les curseurs côté serveur du type demandé. MicrosoftSQL Server retourne une erreur qui indique que le type de curseur a changé. Cette conversion est appelée conversion implicite de curseur ou plus rarement dégradation de curseur.

Le tableau ci-dessous répertorie les facteurs déclenchant dans SQL Server la conversion implicite d'un type de curseur en un autre.

Étape

Facteur de déclenchement d'une conversion

Curseur avant uniquement

Curseur piloté par jeu de clés

Curseur dynamique

Passez à l'étape

1

La clause FROM de la requête ne fait référence à aucune table.

Devient statique.

Devient statique.

Devient statique.

Terminer

2

La requête contient : agrégats de liste de sélection GROUP BY UNION DISTINCT HAVING

Devient statique.

Devient statique.

Devient statique.

Terminer

3

La requête génère une table de travail interne, par exemple les colonnes d'une clause ORDER BY ne comportent pas d'index.

Devient un jeu de clés.

 

Devient un jeu de clés.

5

4

La requête fait référence à des tables distantes situées sur des serveurs liés.

Devient un jeu de clés.

 

Devient un jeu de clés.

5

5

La requête fait référence à au moins une table sans index unique. Curseurs Transact-SQL uniquement.

 

Devient statique.

 

Terminer

[!REMARQUE]

Les curseurs à avance rapide ne sont jamais convertis.

[!REMARQUE]

Les curseurs à jeu de clés et dynamiques sont convertis uniquement si une des tables de base sous-jacentes ne possède pas d'index unique ou si la requête ne retourne pas directement les colonnes clés des tables de base, par exemple si la requête contient les fonctions d'agrégats ou des opérateurs set.