|
![]() | Prßva a jejich subjekty | ![]() | 602SQL server | SystΘmovΘ triggery | ![]() |
╚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