Verwenden impliziter Cursorkonvertierungen

Anwendungen können einen Cursortyp anfordern und anschließend eine Transact-SQL-Anweisung ausführen, die nicht von Servercursorn des angeforderten Typs unterstützt wird. Microsoft SQL Server gibt einen Fehler zurück, der angibt, dass sich der Cursortyp geändert hat. Diese Konvertierung wird als implizite Cursorkonvertierung bezeichnet oder auch als Cursordegradierung.

Es folgen die Faktoren, durch die SQL Server implizit einen Cursor aus einem Typ in einen anderen konvertiert.

Schritt

Konvertierung ausgelöst durch

Vorwärtscursor

Keysetgesteuerter Cursor

Dynamischer Cursor

Wechseln zu Schritt

1

Die FROM-Klausel der Abfrage verweist auf keine Tabellen.

Wird statisch.

Wird statisch.

Wird statisch.

Fertig

2

Abfrage enthält: Auswahllistenaggregate GROUP BY UNION DISTINCT HAVING

Wird statisch.

Wird statisch.

Wird statisch.

Fertig

3

Die Abfrage generiert eine interne Arbeitstabelle (beispielsweise werden die Spalten einer ORDER BY-Klausel nicht von einem Index erfasst).

Wird zum Keyset.

 

Wird zum Keyset.

5

4

Die Abfrage verweist auf Remotetabellen in Verbindungsservern.

Wird zum Keyset.

 

Wird zum Keyset.

5

5

Die Abfrage verweist auf mindestens eine Tabelle ohne einen eindeutigen Index. Nur Transact-SQL-Cursor.

 

Wird statisch.

 

Fertig

HinweisHinweis

Schnelle Vorwärtscursor werden niemals konvertiert.

HinweisHinweis

Keysetgesteuerte- und dynamische Cursor werden nur konvertiert, wenn eine der zugrunde liegenden Basistabellen keinen eindeutigen Index aufweist oder die Abfrage die Schlüsselspalten der Basistabellen nicht direkt zurückgibt. Dies geschieht z. B., wenn die Abfrage Aggregatfunktionen oder Mengenoperatoren enthält.