╚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