Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a: SQL Server
Devolve informações sobre os cursores que estão abertos em várias bases de dados.
Sintaxe
dm_exec_cursors (session_id | 0 )
Arguments
session_id | 0
ID da sessão. Se session_id for especificado, esta função devolve informação sobre os cursores na sessão especificada.
Se 0 for especificado, a função devolve informação sobre todos os cursores para todas as sessões.
Tabela retornada
| Nome da coluna | Tipo de dados | Descrição |
|---|---|---|
| session_id | int | ID da sessão que contém este cursor. |
| cursor_id | int | ID do objeto cursor. |
| name | nvarchar(256) | Nome do cursor conforme definido pelo utilizador. |
| propriedades | nvarchar(256) | Especifica as propriedades do cursor. Os valores das seguintes propriedades são concatenados para formar o valor desta coluna: Interface de Declaração Tipo de cursor Concorrência do cursor Escopo do cursor Nível de aninhamento do cursor Por exemplo, o valor devolvido nesta coluna pode ser "TSQL | Dinâmica | Otimista | Global (0)". |
| sql_handle | varbinary(64) | Handle para o texto do lote que declarou o cursor. |
| statement_start_offset | int | Número de caracteres no procedimento em lote ou armazenado em execução em que a instrução em execução está a ser iniciada. Pode ser usado em conjunto com o sql_handle, o statement_end_offsete a função de gerenciamento dinâmico sys.dm_exec_sql_text para recuperar a instrução atualmente em execução para a solicitação. |
| statement_end_offset | int | Número de caracteres no batch ou procedimento armazenado em execução atual onde termina a instrução em execução. Pode ser usado em conjunto com o sql_handle, o statement_start_offsete a função de gerenciamento dinâmico sys.dm_exec_sql_text para recuperar a instrução atualmente em execução para a solicitação. |
| plan_generation_num | bigint | Um número de sequência que pode ser usado para distinguir entre instâncias de planos após recompilação. |
| creation_time | data e hora | Carimbo temporal em que este cursor foi criado. |
| is_open | bit | Especifica se o cursor está aberto. |
| is_async_population | bit | Especifica se o thread em segundo plano ainda está a preencher assíncronamente um cursor KEYSET ou STATIC. |
| is_close_on_commit | bit | Especifica se o cursor foi declarado usando CURSOR_CLOSE_ON_COMMIT. 1 = O cursor será fechado quando a transação terminar. |
| fetch_status | int | Devolve o estado de última busca do cursor. Este é o último valor @@FETCH_STATUS devolvido. |
| fetch_buffer_size | int | Devolve informação sobre o tamanho do buffer de busca. 1 = Transact-SQL cursores. Isto pode ser definido para um valor mais alto para os cursores da API. |
| fetch_buffer_start | int | Para cursores FAST_FORWARD e DINÂMICOS, devolve 0 se o cursor não estiver aberto ou se estiver posicionado antes da primeira linha. Caso contrário, devolve -1. Para cursores STATIC e KEYSET, devolve 0 se o cursor não estiver aberto, e -1 se estiver posicionado para além da última linha. Caso contrário, devolve o número da linha em que está posicionado. |
| ansi_position | int | Posição do cursor dentro do buffer de busca. |
| worker_time | bigint | Tempo passado, em microssegundos, pelos trabalhadores a executar este cursor. |
| Leituras | bigint | Número de leituras realizadas pelo cursor. |
| escreve | bigint | Número de escritas realizadas pelo cursor. |
| dormant_duration | bigint | Milissegundos desde que a última consulta (abrir ou buscar) neste cursor foi iniciada. |
Permissions
Requer VIEW permissão de ESTADO DO SERVIDOR no servidor.
Permissões para SQL Server 2022 e posterior
Requer VIEW permissão ESTADO DE DESEMPENHO DO SERVIDOR no servidor.
Remarks
A tabela seguinte fornece informações sobre a interface de declaração do cursor e inclui os valores possíveis para a coluna de propriedades.
| Property | Descrição |
|---|---|
| API | O cursor era declarado através de uma das APIs de acesso a dados (ODBC, OLEDB). |
| TSQL | O cursor era declarado usando a sintaxe Transact-SQL DECLARE CURSOR. |
A tabela seguinte fornece informações sobre o tipo de cursor e inclui os valores possíveis para a coluna de propriedades.
| Tipo | Descrição |
|---|---|
| Conjunto de teclas | O cursor foi declarado como Keyset. |
| Dynamic | O cursor foi declarado como Dinâmico. |
| Instantâneo | O cursor foi declarado como Snapshot ou Static. |
| Fast_Forward | O cursor foi declarado como Avanço Rápido. |
A tabela seguinte fornece informações sobre a concorrência do cursor e inclui os valores possíveis para a coluna de propriedades.
| Concurrency | Descrição |
|---|---|
| Somente leitura | O cursor foi declarado apenas de leitura. |
| Fechaduras de Scroll | O cursor usa bloqueios de scroll. |
| Otimista | O cursor utiliza controlo de concorrência otimista. |
A tabela seguinte fornece informações sobre o escopo do cursor e inclui os valores possíveis para a coluna de propriedades.
| Scope | Descrição |
|---|---|
| Local | Especifica que o escopo do cursor é local para o batch, procedimento armazenado ou trigger em que o cursor foi criado. |
| Global | Especifica que o escopo do cursor é global para a ligação. |
Exemplos
A. Deteção de cursores antigos
Este exemplo devolve informações sobre cursores que estiveram abertos no servidor há mais tempo do que o tempo especificado de 36 horas.
SELECT creation_time, cursor_id, name, c.session_id, login_name
FROM sys.dm_exec_cursors(0) AS c
JOIN sys.dm_exec_sessions AS s ON c.session_id = s.session_id
WHERE DATEDIFF(hh, c.creation_time, GETDATE()) > 36;
GO
Ver também
Visualizações e funções de gerenciamento dinâmico (Transact-SQL)
Visualizações e funções de gerenciamento dinâmico relacionadas à execução (Transact-SQL)
sys.dm_exec_sessions (Transact-SQL)