602SQL-Úplná dokumentace Index  

Systémový dotaz _IV_LOGGED_USERS

Odpověď na systémový dotaz _iv_logged_users obsahuje jeden řádek pro každé klientské vlákno na serveru. Jedno vlákno existuje pro každého připojeného uživatele, dále existují vlákna systémová, které spouští sám server, a samostatná vlákna spuštěná příkazem CALL DETACHED.

Při zobrazení vláken v okně Monitoru (záložka Klienti a vlákna) se barvou odlišují "normální" klienti (černá barva) od systémových vláken (modrá barva) a samostatně spuštěných SQL procedur (červená barva), názvy sloupců gridu jsou přeloženy (jména v závorkách), mohou být v jiném než zde uvedeném pořadí a číselné hodnoty mohou být nahrazeny slovním vyjádřením.

V odpovědi na dotaz jsou po řadě tyto sloupce:

Jméno sloupce Typ Obsah
Login_name (Jméno) CHAR(31) jméno, pod nimž je uživatel přihlášen, u systémových vláken může být např. DB_ADMIN či ANONYMOUS
Client_number (Číslo) INT interní číslo klienta, stejné jako vrací funkce Client_number; v předpisu pro logování (funkce _sqp_define_log) odpovídá zkratce %c
Sel_schema_name (Aplikace) CHAR(31) jméno otevřené aplikace (schématu)
State (Stav) INT stav provádění požadavku klienta - viz níže; normální klidový stav normálního klienta = 4
Connection (Spojení) INT způsob připojení klienta na server (0 = přímo, 1 = TCP/IP, 4 = HTTP tunel)
Net_address (Síťová adresa) CHAR(30) síťová adresa klienta a číslo portu, na němž se připojil (prázdná pro klienty s přímým přístupem)
Detached (Samostatné) BOOLEAN příznak, že jde o samostatné vlákno (spuštěné příkazem CALL DETACHED)
Worker_thread (Pracovní) BOOLEAN příznak, že jde o systémové pracovní vlákno, které neobsluhuje klientský požadavek (např. replikační vlákna), nebo vlákno spuštěné jako samostatné (detached)
Own_connection (Já?) BOOLEAN příznak, že jde o vlákno klienta kladoucího tento informační dotaz
Transaction_open (Transact.) BOOLEAN příznak, že vlákno má otevřenou explicitní transakci
Isolation_level (Izolace) INT stupeň izolace transakcí nastavený pro klienta (1 = READ COMMITTED, 3 = SERIALIZABLE)
Sql_options (Volby SQL) INT součet příznaků kompatibility SQL nastavený pro tohoto klienta pomocí funkce Set_sql_option nebo převzaté globálně z nastavení na Řídicí konzoli
Lock_waiting_timeout (Čekání) INT délka čekání na uvolnění zámků blokovaných jinými klienty, v desetinách sekundy, nebo -1, pokud se čeká neomezeně dlouho
Comm_encryption (Utajení) INT je větší než nula pokud vlákno patří klientovi, jehož komunikace se serverem je šifrovaná, neutajená je v gridu označena jako Plain
Session_number (Sezení) INT unikátní identfikace klientského vlákna, na rozdíl od čísla klienta ve sloupci client_number se po dobu spuštění SQL serveru neopakují; v předpisu pro logování (funkce _sqp_define_log) odpovídá zkratce %e
Profiled_thread (Profilování) BOOLEAN pro konkrétní vlákno je explicitně zapnuté profilování; je-li profilování globálně zapnuté pro všechna vlákna, může zde být hodnota FALSE
Thread_name (Jméno vlákna) CHAR(31) označení vlákna nastavené pomocí porcedury _sqp_set_thread_name; běžní klienti se takto označují automaticky (GUI client, ODBC client apod.)

Hodnoty ve sloupci State mají tento význam:

0 nebo >100 vlákno se provádí; v některých situacích se místo 0 vypisují hodnoty >100 signalizující interní vnitřní stavy, v nichž se vlákno nachází při práci, tyto hodnoty se nedají jednoduše interpretovat a slouží výhradně při případném zjišťování problémů ve spolupráci s Hotline (nejedná se o chybové stavy!);
1 vlákno čeká na zámek na stránce paměti (např. editované indexy)
2 vlákno čeká na uvolnění stránky v diskové cache
3 vlákno čeká na zámek na záznamu
4 vlákno čeká na příchod dalšího požadavku od klienta, normální klidový stav
5 vlákno odesílá odpověď na požadavek
6 vlákno přijímá nový požadavek od klienta
7 vlákno se ukončuje
8 vlákno čeká na semaforu (ve funkci Wait_for_semaphore)
9 vlákno čeká ve funkci Sleep
10 vlákno čeká na událost (ve funkci Wait_for_event)

Vlákno uživatele, který tento dotaz položil má hodnotu sloupce State rovnou 0 (případný stav > 100 není chybou).

Příklad:

Vypsat uživatele (ne pracovní vlákna), kteří jsou přihlášeni do aplikace Majetek:

SELECT Login_name
FROM  _iv_logged_users
WHERE sel_schema_name = 'Majetek' AND NOT worker_thread