Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
platí pro:SQL Server
Vrací informace o kurzorech, které jsou otevřené v různých databázích.
Syntax
dm_exec_cursors (session_id | 0 )
Argumenty
session_id | 0
ID relace. Pokud je session_id specifikováno, tato funkce vrací informace o kurzorech ve specifikované relaci.
Pokud je zadáno 0, funkce vrací informace o všech kurzorech pro všechny relace.
Vrácená tabulka
| Název sloupce | Datový typ | Description |
|---|---|---|
| session_id | int | ID relace, která tento kurzor drží. |
| cursor_id | int | ID kurzorového objektu. |
| name | nvarchar(256) | Název kurzoru definovaný uživatelem. |
| vlastnosti | nvarchar(256) | Specifikuje vlastnosti kurzoru. Hodnoty následujících vlastností jsou spojeny do hodnoty tohoto sloupce: Rozhraní deklarací Typ kurzoru Souběžnost kurzorů Rozsah kurzoru Úroveň vnoření kurzoru Například hodnota vrácená v tomto sloupci může být "TSQL | Dynamic | Optimistický | Global (0)". |
| sql_handle | varbinary(64) | Přiložte k textu dávky, která označila kurzor. |
| statement_start_offset | int | Počet znaků do právě vykonávané dávkové nebo uložené procedury, na které aktuálně vykonávaný příkaz začíná. Lze jej použít společně s funkcí sql_handle, statement_end_offset a dynamické správy sys.dm_exec_sql_text k získání aktuálně vykonávaného příkazu pro požadavek. |
| statement_end_offset | int | Počet znaků do právě vykonávané batch nebo uložené procedury, při které právě vykonávaný příkaz končí. Lze jej použít společně s funkcí sql_handle, statement_start_offset a dynamické správy sys.dm_exec_sql_text k získání aktuálně vykonávaného příkazu pro požadavek. |
| plan_generation_num | bigint | Pořadové číslo, které lze použít k rozlišení mezi instancemi plánů po překompilaci. |
| creation_time | datetime | Časové razítko, kdy byl kurzor vytvořen. |
| is_open | bit | Specifikuje, zda je kurzor otevřený. |
| is_async_population | bit | Specifikuje, zda vlákno na pozadí stále asynchronně vyplňuje kurzor KEYSET nebo STATICKÝ. |
| is_close_on_commit | bit | Specifikuje, zda byl kurzor deklarován použitím .CURSOR_CLOSE_ON_COMMIT 1 = Kurzor se zavře po skončení transakce. |
| fetch_status | int | Vrací stav posledního načtení kurzoru. Toto je poslední vrácená hodnota @@FETCH_STATUS. |
| fetch_buffer_size | int | Vrací informace o velikosti bufferu pro načítaní. 1 = Transact-SQL kurzorů. Tuto hodnotu lze nastavit na vyšší hodnotu pro API kurzory. |
| fetch_buffer_start | int | Pro kurzor FAST_FORWARD a DYNAMIC vrací 0, pokud kurzor není otevřený nebo je umístěn před prvním řádkem. Jinak se vrátí -1. Pro kurzory STATIC a KEYSET vrací 0, pokud kurzor není otevřený, a -1, pokud je kurzor umístěn za poslední řádkem. Jinak vrací číslo řádku, ve kterém je umístěn. |
| ansi_position | int | Pozice kurzoru v bufferu pro načítání. |
| worker_time | bigint | Čas strávený v mikrosekundách pracovníky při provádění kurzoru. |
| čte | bigint | Počet přečtených provedených kurzorem. |
| píše | bigint | Počet zápisů provedených kurzorem. |
| dormant_duration | bigint | Milisekundy od spuštění posledního dotazu (otevření nebo načítání) na tomto kurzoru. |
Povolení
Vyžaduje VIEW oprávnění SERVER STATE na serveru.
Oprávnění pro SQL Server 2022 a novější
Vyžaduje VIEW oprávnění SERVER PERFORMANCE STATE na serveru.
Poznámky
Následující tabulka poskytuje informace o rozhraní pro deklaraci kurzoru a zahrnuje možné hodnoty pro sloupec vlastností.
| Property | Description |
|---|---|
| API | Kurzor byl deklarován pomocí jednoho z API pro přístup k datům (ODBC, OLEDB). |
| TSQL | Kurzor byl deklarován pomocí syntaxe Transact-SQL DECLARE CURSOR. |
Následující tabulka poskytuje informace o typu kurzoru a obsahuje možné hodnoty pro sloupec vlastností.
| Typ | Description |
|---|---|
| Sada klíčů | Kurzor byl označen jako Keyset. |
| Dynamický | Kurzor byl označen jako dynamický. |
| Snapshot | Kurzor byl označen jako Snapshot nebo Static. |
| Fast_Forward | Kurzor byl označen jako Fast Forward. |
Následující tabulka poskytuje informace o souběžnosti kurzoru a obsahuje možné hodnoty pro sloupec vlastností.
| Concurrency | Description |
|---|---|
| Jen pro čtení | Kurzor byl označen jako pouze pro čtení. |
| Zámky na svitky | Kurzor používá zámky na posuvné posuvky. |
| Optimistický | Kurzor používá optimistickou kontrolu souběžnosti. |
Následující tabulka poskytuje informace o rozsahu kurzoru a zahrnuje možné hodnoty pro sloupec vlastností.
| Scope | Description |
|---|---|
| Local | Určuje, že rozsah kurzoru je místní pro dávku, uloženou proceduru nebo aktivační událost, ve které byl kurzor vytvořen. |
| Globální | Určuje, že rozsah kurzoru je globální pro připojení. |
Examples
A. Detekce starých kurzorů
Tento příklad vrací informace o kurzorech, které byly na serveru otevřené déle než stanovený čas 36 hodin.
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
Viz také
Zobrazení a funkce dynamické správy (Transact-SQL)
zobrazení a funkce související se spouštěním dynamické správy (Transact-SQL)
sys.dm_exec_sessions (Transact-SQL)