Compartilhar via


Usando conversões de cursor implícitas

Os aplicativos podem solicitar um tipo de cursor e então executar uma instrução Transact-SQL que não é suportada por cursores de servidor do tipo solicitado. O Microsoft SQL Server retorna um erro que indica que o tipo de cursor foi alterado. Essa conversão é chamada conversão de cursor implícita e às vezes é referida como degradação de cursor.

Esses são os fatores que ativam o SQL Server a converter um cursor implicitamente de um tipo para outro.

Etapa

Conversão ativada por

Somente avanço

Controlado por conjunto de chaves

Dinâmico

Vá para a etapa

1

A cláusula FROM da consulta não faz referência a nenhuma tabela.

Torna-se estático.

Torna-se estático.

Torna-se estático.

Concluído

2

A consulta contém: lista de seleção agrega GROUP BY UNION DISTINCT HAVING

Torna-se estático.

Torna-se estático.

Torna-se estático.

Concluído

3

A consulta gera uma tabela de trabalho interna. Por exemplo, as colunas de um ORDER BY não são cobertas por um índice.

Torna-se conjunto de chaves

 

Torna-se conjunto de chaves

5

4

A consulta faz referência a tabelas remotas em servidores vinculados.

Torna-se conjunto de chaves

 

Torna-se conjunto de chaves

5

5

A consulta faz referência a pelo menos uma tabela sem um índice exclusivo. Cursores Transact-SQL apenas.

 

Torna-se estático.

 

Concluído

ObservaçãoObservação

Os cursores de avanço rápido nunca são convertidos.

ObservaçãoObservação

Os cursores de conjunto de chaves e dinâmicos só são convertidos se nenhuma das tabelas base subjacentes tiver um índice exclusivo, ou se a consulta não retornar as colunas de chave das tabelas base diretamente. Por exemplo, se a consulta contiver funções de agregação ou operadores de conjunto.

Consulte também

Conceitos