Использование неявных преобразований курсора
Приложения могут запрашивать тип курсора и затем выполнить инструкцию Transact-SQL, которая не поддерживается серверными курсорами запрошенного типа. Microsoft SQL Server возвращает ошибку, которая указывает на изменение типа курсора. Это преобразование называют неявным преобразованием курсора, и иногда оно упоминается как деградация курсора.
Далее приведены факторы, которые вызывают в SQL Server неявное преобразование курсора из одного типа в другой.
Шаг |
Чем вызвано преобразование |
Однонаправленный |
Управляемый набором ключей |
Динамический |
Переход к шагу |
---|---|---|---|---|---|
1 |
Предложение FROM запроса не ссылается ни на какие таблицы. |
Становится статичным. |
Становится статичным. |
Становится статичным. |
Готово |
2 |
Запрос содержит в списке выборки агрегаты: GROUP BY, UNION, DISTINCT, HAVING |
Становится статичным. |
Становится статичным. |
Становится статичным. |
Готово |
3 |
Запрос формирует внутреннюю рабочую таблицу, например, если столбцы в предложении ORDER BY не проиндексированы. |
Становится набором ключей. |
Становится набором ключей. |
5 |
|
4 |
Запрос ссылается на удаленные таблицы в связанных серверах. |
Становится набором ключей. |
Становится набором ключей. |
5 |
|
5 |
Запрос ссылается, по крайней мере, на одну таблицу без уникального индекса. Только курсоры Transact-SQL. |
Становится статичным. |
Готово |
Примечание |
---|
Быстрые однонаправленные курсоры никогда не преобразуются. |
Примечание |
---|
Набор ключей и динамические курсоры преобразуются, только если любая из основных базовых таблиц не имеет уникального индекса или если запрос не возвращает ключевые столбцы базовых таблиц непосредственно. Например, если запрос содержит статистические функции или набор операторов. |