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 MicrosoftSQL 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ção |
---|
Os cursores de avanço rápido nunca são convertidos. |
Observaçã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. |