_sqp_trace

sql

function _sqp_trace(IN situation INTEGER, IN username CHAR(31), IN objectname CHAR(63), IN logname CHAR(31), IN kontext_extent INTEGER) RETURNS BOOLEAN;

Parametry

situation číslo situace, jejíž logování se má ovlivnit
username jméno uživatele, jehož akce se mají logovat, je-li prázdné, míní se všichni uživatele
objectname jméno tabulky, k níž se vztahuje požadavek na logování
logname jméno logu, do něhož se loguje, je-li prázdné, míní se standardní log
kontext_extent určuje rozsah informací v logu, případně vypíná logování

Od verze

7.0

Popis

Funkce zařadí nový požadavek na logování určité situace nebo změní či zruší platný požadavek na logování.

Čísla situací v parametru situation jsou označena konstantami popsanými zde.

Pro situace vztahující se k manipulaci s daty v tabulkách uvádí parametr objectname jméno tabulky, které se logování týká. Jméno lze prefixovat jménem schématu (aplikace), pokud prefix není uveden, míní se právě vybrané schéma. Tabulka musí existovat již během volání této funkce.

Pokud je jméno logu logname neprázdné, pak musí označovat již existující log, například vytvořený dřívějším voláním funkce _sqp_define_log.

Parametr username musí označovat existující uživatelské jméno. Nelze v něm použít jméno uživatele, který bude teprve založen.

Hodnoty parametru kontext_extent určují míru vypisovaných informací o kontextu, v němž situace nastala. Existují tři stupně kontextu:

Kontext větší než 1 má smysl zejména při logování uživatelských chyb, SQL příkazů a manipulací s tabulkou. Nastavením kontextu 0 se logování vypíná.

Nastavení může provádět jen Provozní správce databáze, požadavek na trasování čtení a zápisu dat jen Bezpečnostní správce databáze - viz Administrování SQL serveru.

Persistence požadavků

Po vypnutí a opětovném zapnutí serveru se zachovají pouze požadavky na logování do základního logu serveru, bez vazby na jméno uživatele nebo jméno tabulky.

Hodnota funkce

Funkce vrací TRUE, pokud úspěšně zařadila nebo zrušila zadaný požadavek na logování. Vrací FALSE při chybě, která může být způsobena zadáním jména neexistujícího uživatele nebo objektu.

Příklad:

V proceduře _ON_SERVER_START můžete pro vývoj aplikací zapnout podrobné trasování do zvláštního logu, do něhož má přístup jen správce, a nastavení běžného logu např. takto:

PROCEDURE _ON_SERVER_START();
BEGIN
  CALL Log_write("nastaven debuglog");

  CALL _sqp_define_log('debuglog','c:\pom\debuglog.log','%d %t %s %a %u %m');
  CALL _sqp_trace(TRACE_SERVER_FAILURE, '', '', 'debuglog', 3);
  CALL _sqp_trace(TRACE_START_STOP,     '', '', 'debuglog', 3);
  CALL _sqp_trace(TRACE_LOGIN,          '', '', 'debuglog', 3);
  CALL _sqp_trace(TRACE_SERVER_INFO,    '', '', 'debuglog', 3);
  CALL _sqp_trace(TRACE_USER_ERROR,     '', '', 'debuglog', 3);
  CALL _sqp_trace(TRACE_SQL,            '', '', 'debuglog', 3);
  CALL _sqp_trace(TRACE_CURSOR,         '', '', 'debuglog', 3);
  CALL _sqp_trace(TRACE_LOG_WRITE,      '', '', 'debuglog', 3);
  CALL _sqp_trace(TRACE_PROCEDURE_CALL, '', '', 'debuglog', 3);
  CALL _sqp_trace(TRACE_TRIGGER_EXEC,   '', '', 'debuglog', 3);

  CALL Log_write("nastaven běžný log");
  CALL _sqp_trace(TRACE_SERVER_FAILURE, '', '', '', 1);
  CALL _sqp_trace(TRACE_START_STOP,     '', '', '', 1);
  CALL _sqp_trace(TRACE_USER_ERROR,     '', '', '', 1);
  CALL _sqp_trace(TRACE_LOG_WRITE,      '', '', '', 1);
  CALL _sqp_trace(TRACE_REPLICATION,    '', '', '', 0);
  CALL _sqp_trace(TRACE_DIRECT_IP,      '', '', '', 0);
  CALL _sqp_trace(TRACE_REPLIC_MAIL,    '', '', '', 0);
  CALL _sqp_trace(TRACE_REPLIC_COPY,    '', '', '', 0);
  CALL _sqp_trace(TRACE_REPL_CONFLICT,  '', '', '', 0);
END

Viz