sys.dm_exec_cursors (T-SQL)
Berlaku untuk: SQL Server
Mengembalikan informasi tentang kursor yang terbuka dalam berbagai database.
Sintaks
dm_exec_cursors (session_id | 0 )
Argumen
session_id | 0
ID sesi. Jika session_id ditentukan, fungsi ini mengembalikan informasi tentang kursor dalam sesi yang ditentukan.
Jika 0 ditentukan, fungsi mengembalikan informasi tentang semua kursor untuk semua sesi.
Tabel Dikembalikan
Nama kolom | Jenis data | Deskripsi |
---|---|---|
session_id | int | ID sesi yang menyimpan kursor ini. |
cursor_id | int | ID objek kursor. |
nama | nvarchar(256) | Nama kursor seperti yang didefinisikan oleh pengguna. |
properties | nvarchar(256) | Menentukan properti kursor. Nilai properti berikut digabungkan untuk membentuk nilai kolom ini: Antarmuka Deklarasi Tipe Kursor Konkurensi Kursor Cakupan kursor Tingkat bersarang kursor Misalnya, nilai yang dikembalikan dalam kolom ini mungkin adalah "TSQL | Dinamis | Optimis | Global (0)". |
sql_handle | varbinary(64) | Tangani ke teks batch yang mendeklarasikan kursor. |
statement_start_offset | int | Jumlah karakter ke dalam batch yang sedang dijalankan atau prosedur tersimpan di mana pernyataan yang sedang dijalankan dimulai. Dapat digunakan bersama dengan sql_handle, statement_end_offset, dan fungsi manajemen dinamis sys.dm_exec_sql_text untuk mengambil pernyataan yang sedang dijalankan untuk permintaan tersebut. |
statement_end_offset | int | Jumlah karakter ke dalam batch yang sedang dijalankan atau prosedur tersimpan di mana pernyataan yang sedang dijalankan berakhir. Dapat digunakan bersama dengan sql_handle, statement_start_offset, dan fungsi manajemen dinamis sys.dm_exec_sql_text untuk mengambil pernyataan yang sedang dijalankan untuk permintaan tersebut. |
plan_generation_num | bigint | Nomor urut yang dapat digunakan untuk membedakan antara instans rencana setelah kompilasi ulang. |
creation_time | datetime | Tanda waktu ketika kursor ini dibuat. |
is_open | bit | Menentukan apakah kursor terbuka. |
is_async_population | bit | Menentukan apakah utas latar belakang masih secara asinkron mengisi kursor KEYSET atau STATIC. |
is_close_on_commit | bit | Menentukan apakah kursor dideklarasikan dengan menggunakan CURSOR_CLOSE_ON_COMMIT. 1 = Kursor akan ditutup ketika transaksi berakhir. |
fetch_status | int | Mengembalikan status pengambilan terakhir kursor. Ini adalah nilai @@FETCH_STATUS terakhir yang dikembalikan. |
fetch_buffer_size | int | Mengembalikan informasi tentang ukuran buffer pengambilan. 1 = Kursor Transact-SQL. Ini dapat diatur ke nilai yang lebih tinggi untuk kursor API. |
fetch_buffer_start | int | Untuk kursor FAST_FORWARD dan DINAMIS, kursor mengembalikan 0 jika kursor tidak terbuka atau jika diposisikan sebelum baris pertama. Jika tidak, ia mengembalikan -1. Untuk kursor STATIC dan KEYSET, kursor mengembalikan 0 jika kursor tidak terbuka, dan -1 jika kursor diposisikan di luar baris terakhir. Jika tidak, ia mengembalikan nomor baris tempat baris diposisikan. |
ansi_position | int | Posisi kursor dalam buffer ambil. |
worker_time | bigint | Waktu yang dihabiskan, dalam mikro detik, oleh pekerja yang menjalankan kursor ini. |
Membaca | bigint | Jumlah bacaan yang dilakukan oleh kursor. |
Menulis | bigint | Jumlah penulisan yang dilakukan oleh kursor. |
dormant_duration | bigint | Milidetik sejak kueri terakhir (buka atau ambil) pada kursor ini dimulai. |
Izin
Memerlukan izin TAMPILKAN STATUS SERVER pada server.
Izin untuk SQL Server 2022 dan yang lebih baru
Memerlukan izin TAMPILKAN STATUS PERFORMA SERVER pada server.
Keterangan
Tabel berikut ini menyediakan informasi tentang antarmuka deklarasi kursor dan menyertakan nilai yang mungkin untuk kolom properti.
Properti | Deskripsi |
---|---|
API | Kursor dideklarasikan dengan menggunakan salah satu API akses data (ODBC, OLEDB). |
TSQL | Kursor dideklarasikan dengan menggunakan sintaks KURSOR DEKLARASI Transact-SQL. |
Tabel berikut ini menyediakan informasi tentang jenis kursor dan menyertakan nilai yang mungkin untuk kolom properti.
Tipe | Deskripsi |
---|---|
Set kunci | Kursor dinyatakan sebagai Keyset. |
Dinamis | Kursor dinyatakan sebagai Dinamis. |
Snapshot | Kursor dinyatakan sebagai Rekam Jepret atau Statis. |
Fast_Forward | Kursor dinyatakan sebagai Maju Cepat. |
Tabel berikut ini menyediakan informasi tentang konkurensi kursor dan menyertakan nilai yang mungkin untuk kolom properti.
Konkurensi | Deskripsi |
---|---|
Baca Saja | Kursor dinyatakan sebagai baca-saja. |
Kunci Gulir | Kursor menggunakan kunci gulir. |
Optimis | Kursor menggunakan kontrol konkurensi optimis. |
Tabel berikut ini menyediakan informasi tentang cakupan kursor dan menyertakan nilai yang mungkin untuk kolom properti.
Cakupan | Deskripsi |
---|---|
Lokal | Menentukan bahwa cakupan kursor bersifat lokal untuk batch, prosedur tersimpan, atau pemicu tempat kursor dibuat. |
Global | Menentukan bahwa cakupan kursor bersifat global ke koneksi. |
Contoh
J. Mendeteksi kursor lama
Contoh ini mengembalikan informasi tentang kursor yang telah terbuka di server lebih lama dari waktu yang ditentukan 36 jam.
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
Lihat Juga
Tampilan dan Fungsi Manajemen Dinamis (Transact-SQL)
Tampilan dan Fungsi Manajemen Dinamis Terkait Eksekusi (Transact-SQL)
sys.dm_exec_sessions (Transact-SQL)