Olen erittäin vihreä, kun kyse on tietokannan käyttöoikeuksien hallinnasta SQL Severissä.
Pidetään esimerkki yksinkertainen.
Sano, että tili ”admin” on kaavojen A, B ja C omistaja.
Siellä on toinen tili ”minion”, jolla haluat saada kaikki oikeudet (päivitä / poista / insert / select / alter) mihin tahansa objektiin (taulukko / näkymä), joka on luotu kaavioilla A, B ja C.
Onko tämä mahdollista? Vai onko sinun täytettävä apuraha-lausunto joka kerta, kun lisäät taulukon / näkymän näiden skeemojen alle? (tuntuu minulle vähän typerältä).
Vastaa
Voit GRANT
skeeman käyttöoikeudet, jotka ovat tehokkaita kaikelle olemassa olevalle ja kaikelle, mikä on olemassa siinä skeemassa.
GRANT SELECT, INSERT, UPDATE, DELETE ON SCHEMA :: <schema> TO <user>;
Tämän lisäksi, jos haluat kieltää tietyn käyttöoikeudet Tämän skeeman sisällä olevan objektin voit tehdä.
Objektin käyttöoikeuksien estäminen
DENY INSERT ON OBJECT::<schema>.<object> TO <user>;
Kommentit
Vastaus
Voit yksinkertaistaa hieman edelleen käyttämällä rooleja etsimäsi työn suorittamiseen.
Kun olet määrittänyt rooleihin, voit vain lisätä käyttäjiä rooliin. Näin sinun ei tarvitse hallita yksittäisten käyttäjien oikeuksia. Käyttäjät perivät roolille myönnetyt käyttöoikeudet.
Alla on esimerkki aloituksesta:
-- 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]