Configuração do servidor: limite do cursor
Aplica-se: SQL Server
Este artigo descreve como configurar a opção de configuração do servidor no SQL Server usando o cursor threshold
SQL Server Management Studio ou o Transact-SQL. A cursor threshold
opção especifica o número de linhas no conjunto de cursores no qual os conjuntos de chaves de cursor são gerados de forma assíncrona. Quando os cursores geram um conjunto de chaves para um conjunto de resultados, o otimizador de consulta estima o número de linhas retornadas para esse conjunto de resultados. Se o otimizador de consulta calcular que o número de linhas retornadas é maior do que esse limite, o cursor será gerado de forma assíncrona, permitindo que o usuário busque linhas do cursor enquanto o cursor continua sendo populado. Caso contrário, o cursor é gerado de forma síncrona e a consulta aguarda até que todas as linhas sejam retornadas.
Limitações
O SQL Server não dá suporte à geração de cursores Transact-SQL estáticos ou controlados por conjunto de chaves de forma assíncrona. As operações de cursor Transact-SQL, como OPEN
ou FETCH
são agrupadas em lote, portanto, não há necessidade da geração assíncrona de cursores Transact-SQL. O SQL Server continua a dar suporte a cursores de servidor de API (interface de programação de aplicativo) assíncronos controlados por conjunto de chaves ou estáticos em que a baixa latência OPEN
é uma preocupação, devido a viagens de ida e volta do cliente para cada operação de cursor.
A exatidão do otimizador de consulta para determinar uma estimativa do número de linhas em um conjunto de chaves depende da moeda das estatísticas para cada tabela no cursor.
Recomendações
Esta é uma opção avançada e deve ser alterada somente por um administrador de banco de dados experiente ou por um profissional de SQL Server certificado.
Se você definir cursor threshold
como -1
, todos os conjuntos de chaves serão gerados de forma síncrona, o que beneficia pequenos conjuntos de cursores. Se você definir cursor threshold
como 0
, todos os conjuntos de teclas do cursor serão gerados de forma assíncrona. Com outros valores, o otimizador de consulta compara o número de linhas esperadas no conjunto de cursores e cria o conjunto de chaves de forma assíncrona se ele exceder o número definido em cursor threshold
. Não defina cursor threshold
muito baixo, porque pequenos conjuntos de resultados são melhor construídos de forma síncrona.
Permissões
Permissões de execução sem parâmetros ou com apenas o primeiro parâmetro em sp_configure
são concedidas a todos os usuários por padrão. Para executar sp_configure
com ambos os parâmetros para alterar uma opção de configuração ou executar a instrução RECONFIGURE
, o usuário deve ter a permissão ALTER SETTINGS
no nível do servidor. A permissão ALTER SETTINGS
é implicitamente mantida pelas funções de servidor fixas sysadmin e serveradmin.
Usar o SQL Server Management Studio
No Pesquisador de Objetos, clique com o botão direito do mouse em um servidor e selecione Propriedades.
Selecione o nó Avançado.
Em Diversos, altere a
cursor threshold
opção para o valor desejado.
Usar o Transact-SQL
Conecte-se ao Mecanismo de Banco de Dados.
Na barra Padrão, selecione Nova Consulta.
Copie e cole o exemplo a seguir na janela de consulta e selecione Executar. Este exemplo mostra como usar sp_configure para definir a opção
cursor threshold
como0
para que os conjuntos de chaves dos cursores sejam gerados de forma assíncrona.USE master; GO EXECUTE sp_configure 'show advanced options', 1; GO RECONFIGURE; GO EXECUTE sp_configure 'cursor threshold', 0; GO RECONFIGURE; GO EXECUTE sp_configure 'show advanced options', 0; GO RECONFIGURE; GO
Para obter mais informações, consulte Opções de configuração do servidor.
Acompanhamento: depois de configurar a opção de limite do cursor
A configuração entra em vigor imediatamente sem reiniciar o servidor.