sys.dm_exec_cursors (Transact-SQL)
Retorna informações sobre os cursores que estão abertos em vários bancos de dados.
Sintaxe
dm_exec_cursors (session_id | 0 )
Argumentos
session_id | 0
ID da sessão. Se session_id for especificado, esta função retornará informações sobre cursores na sessão especificada.Se 0 for especificado, esta função retornará informações sobre todos os cursores em todas as sessões.
Tabela retornada
Nome da coluna |
Tipo de dados |
Descrição |
---|---|---|
session_id |
int |
ID da sessão que detém o cursor. |
cursor_id |
int |
ID do objeto do cursor. |
name |
nvarchar(256) |
Nome do cursor como definido pelo usuário. |
propriedades |
nvarchar(256) |
Especifica as propriedades do cursor. Os valores das seguintes propriedades são concatenados para formar o valor desta coluna:
Por exemplo, o valor retornado nesta coluna pode ser "TSQL | Dynamic | Optimistic | Global (0)". |
sql_handle |
varbinary(64) |
Identificador do texto do lote que declarou o cursor. |
statement_start_offset |
int |
Número de caracteres no procedimento em lote ou armazenado atualmente em execução no qual a instrução atualmente em execução se inicia. Pode ser usado junto com a função de gerenciamento dinâmico sql_handle, statement_end_offset e sys.dm_exec_sql_text para recuperar a instrução atualmente em execução da solicitação. |
statement_end_offset |
int |
Número de caracteres no procedimento em lote ou armazenado atualmente em execução no qual a instrução atualmente em execução termina. Pode ser usado junto com a função de gerenciamento dinâmico sql_handle, statement_start_offset e sys.dm_exec_sql_text para recuperar a instrução atualmente em execução da solicitação. |
plan_generation_num |
bigint |
Um número de seqüência que pode ser usado para distinguir entre instâncias de planos após uma recompilação. |
creation_time |
datetime |
Carimbo de data e hora da criação do cursor. |
is_open |
bit |
Especifica se o cursor está aberto. |
is_async_population |
bit |
Especifica se o thread em segundo plano ainda está populando assincronamente um cursor KEYSET ou STATIC. |
is_close_on_commit |
bit |
Especifica se o cursor foi declarado por meio de CURSOR_CLOSE_ON_COMMIT. 1 = O cursor será fechado quando a transação terminar. |
fetch_status |
int |
Retorna o último status de busca do cursor. Trata-se do último valor de @@FETCH_STATUS retornado. |
fetch_buffer_size |
int |
Retorna informações sobre o tamanho do buffer de busca. 1 = Cursores Transact-SQL. Pode ser definido como um valor mais alto para cursores de API. |
fetch_buffer_start |
int |
No caso dos cursores FAST_FORWARD e DYNAMIC, retornará 0 se o cursor não estiver aberto ou se for posicionado antes da primeira linha. Caso contrário, retornará -1. No caso dos cursores STATIC e KEYSET, retornará 0, se o cursor não estiver aberto, e -1, se o cursor for posicionado antes da primeira linha. Caso contrário, retorna o número da linha onde está posicionado. |
ansi_position |
int |
Posição de cursor dentro do buffer de busca. |
worker_time |
bigint |
Tempo gasto, em microssegundos, pelos trabalhados que executam este cursor. |
reads |
bigint |
Número de leituras executadas pelo cursor. |
writes |
bigint |
Número de gravações executadas pelo cursor. |
dormant_duration |
bigint |
Milissegundos desde o início da última consulta (aberta ou de busca) neste cursor. |
Permissões
Requer a permissão VIEW SERVER STATE no servidor.
Comentários
A tabela a seguir fornece informações sobre a interface de declaração de cursor e inclui os valores possíveis para a coluna de propriedades.
Propriedade |
Descrição |
---|---|
API |
O cursor foi declarado usando uma das APIs de acesso a dados (ODBC, OLEDB). |
TSQL |
O cursor foi declarado usando a sintaxe DECLARE CURSOR de Transact-SQL. |
A tabela a seguir fornece informações sobre o tipo de cursor e inclui os valores possíveis para a coluna de propriedades.
Tipo |
Descrição |
---|---|
Keyset |
O cursor foi declarado como Keyset (conjunto de chaves). |
Dynamic |
O cursor foi declarado como Dynamic (dinâmico). |
Snapshot |
O cursor foi declarado como Snapshot (instantâneo) ou Static (estático). |
Fast_Forward |
O cursor foi declarado como Fast Forward (avanço rápido). |
A tabela a seguir fornece informações sobre o tipo de simultaneidade de cursores e inclui os valores possíveis para a coluna de propriedades.
Simultaneidade |
Descrição |
---|---|
Read Only |
O cursor foi declarado como somente leitura. |
Scroll Locks |
O cursor usa bloqueios de rolagem. |
Optimistic |
O cursor usa controle de simultaneidade otimista. |
A tabela a seguir fornece informações sobre o tipo de escopo de cursor e inclui os valores possíveis para a coluna de propriedades.
Escopo |
Descrição |
---|---|
Local |
Especifica que o escopo do cursor é local para o lote, procedimento armazenado ou gatilho no qual o cursor foi criado. |
Global |
Especifica que o escopo do cursor é global para a conexão. |
Exemplos
A. Detectando cursores antigos
Este exemplo retorna informações sobre cursores que estiveram abertos no servidor por mais tempo que as 36 horas especificadas.
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