Поделиться через


Использование неявных преобразований курсора

Приложения могут запрашивать тип курсора и затем выполнить инструкцию Transact-SQL, которая не поддерживается серверными курсорами запрошенного типа. MicrosoftSQL Server возвращает ошибку, которая указывает на изменение типа курсора. Это преобразование называют неявным преобразованием курсора, и иногда оно упоминается как деградация курсора.

Далее приведены факторы, которые вызывают в SQL Server неявное преобразование курсора из одного типа в другой.

Шаг

Чем вызвано преобразование

Однонаправленный

Управляемый набором ключей

Динамический

Переход к шагу

1

Предложение FROM запроса не ссылается ни на какие таблицы.

Становится статичным.

Становится статичным.

Становится статичным.

Готово

2

Запрос содержит в списке выборки агрегаты: GROUP BY, UNION, DISTINCT, HAVING

Становится статичным.

Становится статичным.

Становится статичным.

Готово

3

Запрос формирует внутреннюю рабочую таблицу, например, если столбцы в предложении ORDER BY не проиндексированы.

Становится набором ключей.

Становится набором ключей.

5

4

Запрос ссылается на удаленные таблицы в связанных серверах.

Становится набором ключей.

Становится набором ключей.

5

5

Запрос ссылается, по крайней мере, на одну таблицу без уникального индекса. Только курсоры Transact-SQL.

Становится статичным.

Готово

ПримечаниеПримечание

Быстрые однонаправленные курсоры никогда не преобразуются.

ПримечаниеПримечание

Набор ключей и динамические курсоры преобразуются, только если любая из основных базовых таблиц не имеет уникального индекса или если запрос не возвращает ключевые столбцы базовых таблиц непосредственно. Например, если запрос содержит статистические функции или набор операторов.

См. также

Основные понятия