sys.dm_exec_cursors
Возвращает сведения о курсорах, открытых в различных базах данных.
Синтаксис
dm_exec_cursors (session_id | 0 )
Аргументы
session_id | 0
Идентификатор сеанса. Если аргумент session_id указан, функция возвращает сведения о курсорах в этом сеансе.Если указано значение 0, функция возвращает сведения обо всех курсорах для всех сеансов.
Возвращаемая таблица
Имя столбца |
Тип данных |
Описание |
---|---|---|
session_id |
int |
Идентификатор сеанса, содержащего курсор. |
cursor_id |
int |
Идентификатор курсора. |
name |
nvarchar(256) |
Имя курсора, определенное пользователем. |
properties |
nvarchar(256) |
Указывает свойства курсора. Для образования значения этого столбца объединены значения следующих свойств:
Например, возвращаемое в этот столбец значение может быть «TSQL | Dynamic | Optimistic | Global (0)». |
sql_handle |
varbinary(64) |
Дескриптор текста пакета, в котором объявлен курсор. |
statement_start_offset |
int |
Количество символов в выполняемом в настоящий момент пакете или хранимой процедуре, в которой запущена текущая инструкция. Вместе со значениями столбцов sql_handle и statement_start_offset это значение может быть использовано для получения текущей выполняемой инструкции данного запроса при помощи функции динамического управления sys.dm_exec_sql_text. |
statement_end_offset |
int |
Количество символов в выполняемом в настоящий момент пакете или хранимой процедуре, в которой завершилась текущая инструкция. Вместе со значениями столбцов sql_handle и statement_start_offset это значение может быть использовано для получения текущей выполняемой инструкции данного запроса при помощи функции динамического управления sys.dm_exec_sql_text. |
plan_generation_num |
bigint |
Порядковый номер, который может использоваться для различия экземпляров планов после рекомпиляции. |
creation_time |
datetime |
Временная метка создания данного курсора. |
is_open |
bit |
Указывает, является ли курсор открытым. |
is_async_population |
bit |
Указывает, выполняется ли до сих пор асинхронное заполнение курсора KEYSET или STATIC фоновым потоком. |
is_close_on_commit |
bit |
Определяет, был ли курсор объявлен с помощью ключевого слова CURSOR_CLOSE_ON_COMMIT. 1 = курсор будет закрыт по завершении транзакции. |
fetch_status |
int |
Возвращает состояние последней выборки курсора. Это последнее значение, возвращенное функцией @@FETCH_STATUS. |
fetch_buffer_size |
int |
Возвращает сведения о размере буфера выборки. 1 = курсоры языка Transact-SQL. Для курсоров API это значение может быть больше. |
fetch_buffer_start |
int |
Для курсоров типа FAST_FORWARD и DYNAMIC возвращается значение 0, если курсор не отрыт или установлен перед первой строкой. Иначе возвращается значение -1. Для курсоров типа STATIC и KEYSET возвращается значение 0, если курсор не открыт, и значение -1, если курсор установлен за последней строкой. В противном случае возвращается номер строки, в которой установлен курсор. |
ansi_position |
int |
Позиция курсора внутри буфера выборки. |
worker_time |
bigint |
Время в миллисекундах, потраченное на обработку данного курсора. |
reads |
bigint |
Количество операций чтения, выполненных курсором. |
writes |
bigint |
Количество операций записи, выполненных курсором. |
dormant_duration |
bigint |
Количество миллисекунд, прошедшее с момента запуска последнего запроса на открытие или на выборку. |
Разрешения
Требуется разрешение VIEW SERVER STATE на сервере.
Замечания
Следующая таблица содержит сведения об интерфейсе объявления курсора и возможные значения для столбца свойств.
Свойство |
Описание |
---|---|
API-интерфейс |
Курсор был объявлен с помощью одной из API-функций для доступа к данным (ODBC, OLEDB). |
TSQL |
Курсор был объявлен с помощью инструкции DECLARE_CURSOR языка Transact-SQL. |
Следующая таблица содержит сведения о типе курсора и возможные значения для столбца свойств.
Тип |
Описание |
---|---|
Keyset |
Курсор был объявлен с типом Keyset. |
Dynamic |
Курсор был объявлен с типом Dynamic. |
Snapshot |
Курсор был объявлен с типом Snapshot или Static. |
Fast_Forward |
Курсор был объявлен с типом Fast Forward. |
Следующая таблица содержит сведения о параллелизме курсоров и возможные значения для столбца свойств.
Параллелизм |
Описание |
---|---|
Read Only |
Курсор был объявлен в режиме только для чтения. |
Scroll Locks |
Курсор использует блокирование прокрутки. |
Optimistic |
Курсор использует управление оптимистичным параллелизмом. |
Следующая таблица содержит сведения об области курсоров и возможные значения для столбца свойств.
Область |
Описание |
---|---|
Local |
Указывает, что курсор является локальным по отношению к пакету, хранимой процедуре или триггеру, в котором он был создан. |
Global |
Указывает, что курсор является глобальным по отношению к соединению. |
Примеры
А. Обнаружение старых курсоров
В этом примере возвращаются сведения о курсорах, которые открыты на сервере дольше указанного времени, составляющего 36 часов.
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