Trasovßnφ a logovßnφ Φinnosti serveru

╚innost SQL serveru lze sledovat pomocφ trasovacφch nßstroj∙ a zaznamenßvat do textov²ch soubor∙, kter²m se °φkß logy. Takto lze zφskat:

Sprßvce databßze m∙₧e urΦit, jakΘ informace se zaznamenßvajφ do logu. Log si lze prohlφ₧et z v²vojovΘho prost°edφ WinBase602 nebo p°φmo v souboru. Aktußlnφ zßznamy z log∙ jsou takΘ v odpov∞di na systΘmov² dotaz _iv_recent_log.

Definovßnφ log∙ a jejich soubory

Pokud pot°ebujete sledovat vφce r∙zn²ch druh∙ informacφ, pak lze pro n∞ vytvo°it samostatnΘ logy. Ka₧d² log mß svoje jmΘno, pro n∞₧ platφ stejnß omezenφ jako pro jmΘna vÜech ostatnφch objekt∙ ve WinBase602.

SQL server v₧dy automaticky vytvß°φ tzv. zßkladnφ log oznaΦen² prßzdn²m jmΘnem. DalÜφ logy je t°eba definovat a pak existujφ a₧ do vypnutφ serveru. Ka₧d² log se zaznamenßvß do jednoho textovΘho souboru (mimo databßzi). Zßkladnφ log se zapisuje do souboru jmΘnem wbsqllog.txt umφst∞nΘho v adresß°i specifikovanΘm na konfiguraΦnφm panelu serveru (standardn∞ je to stejn² adresß°, v n∞m₧ je databßzov² soubor). Soubory p°φsluÜnΘ ostatnφm log∙m se zadßvajφ p°i jejich definovßnφ.

Pokud p°i definovßnφ logu jeho soubor ji₧ existuje, bude se do n∞j zapisovat na konec. Pokud soubor neexistuje, je vytvo°en.

Nov² log lze ve v²vojovΘm prost°edφ WinBase602 definovat takto: Otev°ete okno monitoru (p°φkazem Monitor z menu Nßstroje nebo tlaΦφtkem na liÜt∞), na strßnce Server stisknete tlaΦφtko Nov² log a zadßte jmΘno logu. Nov² log lze z programu definovat tak, ₧e zavolßte standardnφ proceduru _sqp_define_log. Log smφ definovat pouze sprßvce databßze.

Pokud pot°ebujete, aby se urΦit² log vytvß°el p°i ka₧dΘm spuÜt∞nφ serveru, pak za°a∩te volßnφ funkce _sqp_define_log do systΘmovΘho triggeru na start serveru (_on_server_start).

Pro p°φmΘ volßnφ funkce _sqp_define_log z klienta m∙₧ete vyu₧φt direktivu #sql nebo funkci SQL_execute.

Po₧adavky na logovßnφ

Server provßdφ logovßnφ svΘ Φinnosti v souladu se zadan²mi po₧adavky na logovßnφ. Po₧adavek platφ, dokud nenφ zruÜen nebo dokud nenφ ukonΦen server. Ka₧d² po₧adavek mß tyto parametry:

Ve stejnΘm okam₧iku mohou souΦasn∞ platit po₧adavky na logovßnφ stejnΘ situace, stejnΘho u₧ivatele a stejnΘho objektu do r∙zn²ch log∙. Zadßte-li proto po₧adavek na logovßnφ novΘ situace nebo novΘho u₧ivatele nebo novΘho objektu nebo do novΘho logu, neovlivnφ se tφm d°φve zadanΘ po₧adavky.

Po₧adavky na logovßnφ lze zobrazit, zadat, upravit nebo zruÜit na strßnce Trasovßnφ v okn∞ monitoru ve v²vojovΘm prost°edφ WinBase602. Seznam platn²ch po₧adavk∙ na logovßnφ vracφ systΘmov² dotaz _iv_pending_log_reqs. Po₧adavky na logovßnφ lze z programu zadßvat a ruÜit volßnφm standardnφ procedury _sqp_trace. Po₧adavky smφ zadßvat pouze sprßvce databßze.

Pokud pot°ebujete, aby se urΦitΘ logovßnφ provßd∞lo p°i ka₧dΘm spuÜt∞nφ serveru, pak za°a∩te volßnφ funkce _sqp_trace do systΘmovΘho triggeru na start serveru (_on_server_start) - viz p°φklad.

Pro p°φmΘ volßnφ funkce _sqp_trace z klienta m∙₧ete vyu₧φt pragma #sql nebo funkci SQL_execute.

Logovacφ situace

Situace, jejich v²skyt lze logovat, se p°i volßnφ funkce _sqp_trace oznaΦujφ identifikßtory uveden²mi v prvnφm sloupci. V druhΘm sloupci je pφsmeno, kterΘ se pro danou situaci objevφ v logu. Situace jsou rozd∞leny do t°φ t°φd:

Globßlnφ situace t²kajφcφ se provozu serveru:

Identifikßtor   Popis
TRACE_SERVER_FAILURE F globßlnφ selhßnφ serveru (vΦ. sφt∞)
TRACE_NETWORK_GLOBAL N trasovßnφ sφ¥ovΘ komunikace globßlnφ
TRACE_REPLICATION R trasovßnφ replikacφ
TRACE_DIRECT_IP D p°enosy replikaΦnφch paket∙ p°es direct IP
TRACE_REPLIC_MAIL X p°enosy replikaΦnφch paket∙ poÜtou
TRACE_REPLIC_COPY Y p°enosy replikaΦnφch paket∙ kopφrovßnφm soubor∙
TRACE_START_STOP A informace o spuÜt∞nφ a vypnutφ serveru a o chybßch, kterΘ znemo₧≥ujφ spuÜt∞nφ
TRACE_REPL_CONFLICT Q replikaΦnφ konflikt
TRACE_SERVER_INFO B zßkladnφ informace o Φinnosti serveru (nap°. vytvo°enφ zßlohy, odpojenφ nekomunikujφcφho u₧ivatele) a informace vy₧ßdanΘ na konzoli serveru (nap°. v²pis p°ipojen²ch u₧ivatel∙)

Pro tyto situace se nezadßvß jmΘno u₧ivatele, pro kterΘho se majφ logovat.

Situace t²kajφcφ se akcφ konkrΘtnφho klienta:

TRACE_USER_ERROR E u₧ivatelskß chyba
TRACE_USER_MAIL M zatφm nevyu₧ito
TRACE_SQL S provedenφ SQL p°φkazu (vΦetn∞ p°edem p°ipraven²ch p°φkaz∙), text p°φkazu vΦetn∞ hodnot dynamick²ch parametr∙ a prom∞nn²ch klienta lze zobrazit v kontextu, proto doporuΦujeme nastavit kontext na hodnotu 2 nebo 3
TRACE_LOGIN L p°ipojenφ a odpojenφ klienta, login a logout u₧ivatele
TRACE_LOG_WRITE W explicitnφ zßpis do logu pomocφ procedury Log_write
TRACE_CURSOR P otevφrßnφ a zavφrßnφ kurzor∙ vΦetn∞ textu p°φsluÜnΘho SELECTu, pokud je mo₧nΘ jej zjistit

Pro tyto situace lze bu∩ zadat jmΘno u₧ivatele, pro n∞ho₧ se logujφ, nebo lze uvΘst prßzdnΘ jmΘno, a pak se logujφ pro vÜechny u₧ivatele.

DalÜφ situace se t²kajφ manipulacφ s tabulkami. Logovat lze:

TRACE_INSERT i vlo₧enφ novΘho zßznamu do tabulky
TRACE_DELETE d zruÜenφ zßznamu v tabulce
TRACE_WRITE w p°epis hodnoty v zßznamu v tabulce
TRACE_READ r Φtenφ hodnoty ze zßznamu z tabulky

Typicky se pro tyto situace zadßvß konkrΘtnφ sledovanß tabulka. Dßle lze bu∩ zadat jmΘno u₧ivatele, pro n∞ho₧ se situace logujφ, nebo lze uvΘst prßzdnΘ jmΘno, a pak se logujφ pro vÜechny u₧ivatele.

Po spuÜt∞nφ serveru je zapnuto logovßnφ do zßkladnφho logu globßlnφch situacφ A, B, F, situace W pro vÜechny u₧ivatele a dßle se zachovß stav logovßnφ situacφ E a R pro vÜechny u₧ivatele podle nastavenφ provedenΘho p°i poslednφm b∞hu serveru.

Vazba logovßnφ na u₧ivatelskΘ jmΘno

Pro situace t²kajφ se akcφ vyvolßvan²ch u₧ivateli m∙₧e b²t po₧adavek na logovßnφ:

Je-li zadßn po₧adavek na logovßnφ svßzan² s u₧ivatelsk²m jmΘnem, pak se uplatnφ jak pro klienty, kte°φ jsou pod tφmto jmΘnem ji₧ p°ihlßÜenφ, tak i pro klienty, kte°φ se pod tφmto jmΘnem teprve p°ihlßsφ.

Viz