Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Применимо к:SQL Server
Возвращает сведения о курсорах, открытых в различных базах данных.
Syntax
dm_exec_cursors (session_id | 0 )
Аргументы
session_id | 0
Идентификатор сеанса. Если указан session_id , эта функция возвращает сведения о курсорах в указанном сеансе.
Если указано значение 0, функция возвращает сведения обо всех курсорах для всех сеансов.
Возвращаемая таблица
| Название столбца | Тип данных | Описание |
|---|---|---|
| session_id | int | Идентификатор сеанса, содержащего курсор. |
| cursor_id | int | Идентификатор курсора. |
| name | nvarchar(256) | Имя курсора, определенное пользователем. |
| свойства | nvarchar(256) | Указывает свойства курсора. Для образования значения этого столбца объединены значения следующих свойств: интерфейс объявления; Тип курсора параллелизм курсора; область курсора; уровень вложенности курсора. Например, значение, возвращаемое в этом столбце, может быть "TSQL | Dynamic | Оптимистичный | Global (0)". |
| sql_handle | varbinary(64) | Дескриптор текста пакета, в котором объявлен курсор. |
| statement_start_offset | int | Количество символов в выполняемом в настоящий момент пакете или хранимой процедуре, в которой запущена текущая инструкция. Можно использовать вместе с sql_handle, statement_end_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 | Время в миллисекундах, потраченное на обработку данного курсора. |
| Читает | bigint | Количество операций чтения, выполненных курсором. |
| Пишет | bigint | Количество операций записи, выполненных курсором. |
| dormant_duration | bigint | Количество миллисекунд, прошедшее с момента запуска последнего запроса на открытие или на выборку. |
Permissions
Требуется VIEW разрешение SERVER STATE на сервере.
Разрешения для SQL Server 2022 и более поздних версий
Требуется VIEW разрешение на состояние производительности сервера на сервере.
Замечания
Следующая таблица содержит сведения об интерфейсе объявления курсора и возможные значения для столбца свойств.
| Property | Описание |
|---|---|
| API | Курсор был объявлен с помощью одной из API-функций для доступа к данным (ODBC, OLEDB). |
| TSQL | Курсор был объявлен с помощью инструкции DECLARE_CURSOR языка Transact-SQL. |
Следующая таблица содержит сведения о типе курсора и возможные значения для столбца свойств.
| Тип | Описание |
|---|---|
| набор ключей | Курсор был объявлен с типом Keyset. |
| Динамический | Курсор был объявлен с типом Dynamic. |
| Снимок | Курсор был объявлен с типом Snapshot или Static. |
| Fast_Forward | Курсор был объявлен с типом Fast Forward. |
Следующая таблица содержит сведения о параллелизме курсоров и возможные значения для столбца свойств.
| Concurrency | Описание |
|---|---|
| Только для чтения | Курсор был объявлен в режиме только для чтения. |
| Scroll Locks | Курсор использует блокирование прокрутки. |
| Оптимистический | Курсор использует управление оптимистичным параллелизмом. |
Следующая таблица содержит сведения об области курсоров и возможные значения для столбца свойств.
| Объем | Описание |
|---|---|
| Local | Указывает, что курсор является локальным по отношению к пакету, хранимой процедуре или триггеру, в котором он был создан. |
| Глобальный | Указывает, что курсор является глобальным по отношению к соединению. |
Examples
А. Обнаружение старых курсоров
В этом примере возвращаются сведения о курсорах, которые открыты на сервере дольше указанного времени, составляющего 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