SQL 2005 (a vyšší) vs. databázové role

PříspěvekNapsal: 13.03.2009 15:22
od jan.havranek
Uživatelé Helios Orange (zařazení do databáze přímo aplikací) mají vždy databázovou roli db_owner, tedy vlastník databáze.
To je výchozí a doporučený stav.
Databázová role db_owner má oprávnění provádět v databázi všechny dúležité operace, úpravy či mazání dat, zálohování, údržbu apod.

Na starších verzích SQL (7.0, 2000) bylo možné bez větších problémů omezit oprávnění uživatelů odebráním role db_owner a nahrazením této role dvěma dalšími, db_datareader (role má oprávnění číst data) a db_datawriter (role může data vkládat, upravovat a mazat).

více o rolích viz http://msdn.microsoft.com/en-us/library/ms189612(SQL.90).aspx

Na SQL 2005 a vyšších dochází ke změnám a rozšíření oprávnění objektů v databázi. Pokud tedy na SQL nastavím uživateli pouze role db_datareader a db_datawriter, narazím na problém. Při spuštění Helios Orange se objeví dialog změny struktur databáze (obdobně jako po update) ale nemohu pokračovat dále (změny nelze potvrdit, musím dát jedině Storno).
Jediné řešení tohoto stavu je, uživatelům těchto rolí nastavit na zástupci HeO řádkový parametr -kk-, který vypne kontrolu konzistence katalogu a nebude dialog změn zobrazovat. Uživatel se poté normálně přihlásí.

Má to úskalí, takový uživatel nebude moci provádět změnové skripty po skutečném update (otevření databáze může skončit chybou). Databáze po update tedy musí vždy nejprve otevřít uživatel s rolí db_owner a provést změny.