|
![]() | Práva k systémovým tabulkám | ![]() | Práva a jejich subjekty | Práva při provádění uložených procedur a vyhodnocování dotazů | ![]() |
Příkazy SQL, které vkládají nebo ruší záznamy nebo přepisují data v záznamech, kontrolují příslušná práva. Pokud přihlášený uživatel nemá potřebná práva, dojde k chybě NO_RIGHTS a příkaz se neprovede.
Při vkládaní záznamů se kontroluje globální právo vkládat záznamy do tabulky, při rušení nebo přepisu uživatel musí mít buď globální právo rušit záznamy resp. přepisovat příslušné sloupce, anebo musí mít toto právo přiděleno k tomu záznamu, s nimž se pokouší pracovat.
Při vytváření, rušení a modifikování objektů tvořících schéma (tabulky, triggery, uložené procedury,...) rozhodují práva k systémovým tabulkám a práva k jednotlivým objektům.
Při práci s SQL dotazy se jinými pravidly řídí výběr dat do odpovědi na dotaz a jinými čtení dat z odpovědi.
Uživatel musí mít právo číst všechny sloupce, které jsou použité v podmínkách pro výběr záznamů (klauzule WHERE, HAVING). V opačném případě by totiž pokládáním nepřímých dotazů mohl zjistit hodnoty ve sloupcích, které nesmí číst.
V závislosti na nastavení příznaků kompatibility SQLOPT_GLOBAL_REF_RIGHTS SQL server postupuje jedním ze dvou způsobů:
Test záznamových práv je pomalejší, než test hodnoty. Proto nedoporučujeme používat druhou variantu pro vybrání záznamů podle nastavení práv z rozsáhlé množiny.
Pro přečtení každé hodnoty se vyžaduje právo číst. Pokud uživatel toto právo nemá, pak v závislosti na nastavení příznaků kompatibility SQLOPT_RD_PRIVIL_VIOL nastane jedna ze dvou možností:
![]() | Práva k systémovým tabulkám | ![]() | Práva a jejich subjekty | Práva při provádění uložených procedur a vyhodnocování dotazů | ![]() |