Jsem velmi zelený, pokud jde o svět správy databázových oprávnění v SQL Sever.
Pojďme si ponechat příklad jednoduché.
Řekněme, že účet „admin“ je vlastníkem schémat A, B a C.
Existuje další účet „minion“, ke kterému chcete mít úplná práva (aktualizace / mazání) / insert / select / alter) na libovolném objektu (tabulce / pohledu) vytvořeném ve schématech A, B a C.
Je to možné? Nebo musíte provést grantové prohlášení pokaždé, když přidáte tabulku / pohled v rámci těchto schémat? (zdá se mi trochu hloupý).
Odpovědět
Můžete GRANT
oprávnění schématu, která jsou účinná pro všechno existující a vše, co v tomto schématu bude .
GRANT SELECT, INSERT, UPDATE, DELETE ON SCHEMA :: <schema> TO <user>;
Dále, pokud chcete určitému uživateli odepřít oprávnění objekt v rámci tohoto schématu, můžete to udělat.
DENY INSERT ON OBJECT::<schema>.<object> TO <user>;
Komentáře
Odpověď
Chcete-li ještě něco zjednodušit, můžete pomocí rolí provést práci, kterou hledáte.
Jakmile přiřadíte oprávnění k roli, stačí do této role přidat uživatele. Tímto způsobem nebudete muset spravovat oprávnění pro jednotlivé uživatele. Uživatelé dědí oprávnění udělená roli.
Níže je uveden příklad, jak začít:
-- Create the database role CREATE ROLE TableSelector AUTHORIZATION [dbo] GO ---- Grant access rights to a specific schema in the database GRANT SELECT, INSERT, UPDATE, DELETE, ALTER ON SCHEMA::dbo TO TableSelector GO -- Add an existing user to the new role created EXEC sp_addrolemember "TableSelector", "MyDBUser" GO -- Revoke access rights on a schema from a role DENY ALTER -- you can customize here ... ON SCHEMA::dbo TO TableSelector
.... SCHEMA :: [schema] TO [company-name/joshua.duxbury]