602SQL-┌plnß dokumentace Index   Tisk  

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:

Provoznφ sprßvce databßze m∙₧e urΦit, jakΘ informace se zaznamenßvajφ do logu (s v²jimkou trasovßnφ Φtenφ a zßpisu dat, co₧ povoluje BezpeΦnostnφ sprßvce) - viz Administrovßnφ SQL serveru.

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 602SQL.

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 ╪φdicφ konzoli 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 definovat takto: Otev°ete okno ╪φdicφ konzole 602SQL, p°ipojφte se k danΘmu SQL serveru, o naleznete v∞tev Monitor serveru/ Logy serveru. V dialogu v pravΘ Φßsti zadßte jmΘno logu a stisknete tlaΦφtko Vytvo°it nov² log. Pokud mß mφt log jin² ne₧ defaultnφ formßt, zadejte formßt (jeÜt∞ p°ed vytvo°enφm) do pole Formßt (popis formßtu je uveden u funkce _sqp_define_log).

Nov² log lze z programu definovat tak, ₧e zavolßte standardnφ proceduru _sqp_define_log. Log smφ definovat pouze provoznφ 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∞ ╪φdicφ konzole 602SQL. 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 Provoznφ sprßvce databßze (po₧adavky na trasovßnφ dat pouze BezpeΦnostnφ sprßvce) - viz Administrovßnφ SQL serveru.

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 u funkce _sqp_trace.

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. Ve ΦtvrtΘm sloupci jsou ΦφselnΘ hodnoty konstanty, kterΘ vracφ systΘmov² dotaz _iv_pending_log_reqs. Situace jsou rozd∞leny do t°φ t°φd:

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

Identifikßtor   Popis ╚φslo
TRACE_SERVER_FAILURE F globßlnφ selhßnφ serveru (vΦetn∞ sφt∞) 2
TRACE_NETWORK_GLOBAL N trasovßnφ sφ¥ovΘ komunikace globßlnφ 4
TRACE_REPLICATION R trasovßnφ replikacφ 8
TRACE_DIRECT_IP D p°enosy replikaΦnφch paket∙ p°es direct IP 16
TRACE_REPLIC_MAIL X p°enosy replikaΦnφch paket∙ poÜtou 4096
TRACE_REPLIC_COPY Y p°enosy replikaΦnφch paket∙ kopφrovßnφm soubor∙ 8192
TRACE_START_STOP A informace o spuÜt∞nφ a vypnutφ serveru a o chybßch, kterΘ znemo₧≥ujφ spuÜt∞nφ 16384
TRACE_REPL_CONFLICT Q replikaΦnφ konflikt 32768
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∙) 65536
TRACE_NETWORK_ERROR   zatφm nevyu₧ito 2048 (*)
TRACE_BCK_OBJ_ERROR O syntaktickß chyba v objektu, s nim₧ server pracuje na pozadφ û m∙₧e jit o trigger, globßlnφ deklarace ve schΘmatu, implicitnφ hodnotu sloupce nebo integritnφ omezenφ v nßvrhu tabulky 2097152

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 1
TRACE_USER_MAIL M zatφm nevyu₧ito 32 (*)
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 64
TRACE_LOGIN L p°ipojenφ a odpojenφ klienta, login a logout u₧ivatele 128
TRACE_LOG_WRITE W explicitnφ zßpis do logu pomocφ procedury Log_write 1024
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 256
TRACE_IMPL_ROLLBACK V implicitnφ provedenφ operace RollBack kv∙li chyb∞ 512
TRACE_PROCEDURE_CALL P Volßnφ SQL procedury 4194304
TRACE_TRIGGER_EXEC T SpuÜt∞nφ triggeru 8388608

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 524288
TRACE_DELETE d zruÜenφ zßznamu v tabulce 1048576
TRACE_WRITE w p°epis hodnoty v zßznamu v tabulce 262144
TRACE_READ r Φtenφ hodnoty ze zßznamu z tabulky 131072

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φ.

Prohlφ₧enφ logu

VÜechny logy se pr∙b∞₧n∞ zapisujφ do soubor∙. Tyto soubory si lze prohlφ₧et z r∙zn²ch poΦφtaΦ∙ pomocφ nßstroj∙ pro sdφlenφ soubor∙ v sφti. VÜichni klienti mohou Φφst pouze zßkladnφ log. Ostatnφ definovanΘ logy m∙₧e Φφst jen provoznφ sprßvce databßze.

Nejnov∞jÜφ zßznamy zßkladnφho logu jsou vid∞t takΘ v okn∞ serveru.

Klient m∙₧e zφskat nejnov∞jÜφ zßznamy z libovolnΘho logu pomocφ systΘmovΘho informaΦnφho dotazu _iv_recent_log (klient, kter² nenφ sprßvcem, pouze z logu zßkladnφho). Tyto zßznamy se zobrazujφ v okn∞ KonfiguraΦnφ konzole 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. Ostatnφ po₧adavky je t°eba (majφ-li se zachovat i p°es vypnutφ serveru) volat pomocφ funkce _sqp_trace v systΘmovΘm triggeru _on_server_start.

Viz