Chciałbym skonfigurować użytkownika „czytającego” w mojej instancji SQL Server 2012. Chciałbym dać mu prawo do wykonania dowolnej procedury składowanej, funkcji lub bezpośredniej instrukcji SQL, która pobiera dane ze wszystkich tabel i widoków, ale nie może aktualizować ani wstawiać (tj. Niczego czytać i nic nie pisać).
Czy mogę to skonfigurować bez wyraźnego nadania uprawnień do każdej funkcji lub procedury składowanej według nazwy, ale raczej przyznać mu prawo wykonywania dowolnej funkcji lub procedury składowanej, po prostu zabierając prawo do modyfikowania tabel?
Czy coś się zmieni, jeśli zamiast tego uruchomię SQL Server 2008?
Wyjaśnienia i uzupełnienia:
- Jeśli procedura przechowywana zmienia dane, użytkownik powinien otrzymać komunikat o błędzie (albo odmawia modyfikacji, albo całkowicie odmawia dostępu do procedury przechowywanej).
- Jeśli potencjalne rozwiązanie obejmuje odmowę uprawnień, czy mogę po prostu nie przyznać pewnych uprawnień zamiast odmowy?
- Czy odmowa może być zastosowana do wszystkich tabel, widoków itp. (Istniejących teraz i w przyszłości) w bazie danych w jednym poleceniu?
GRANTaby udzielić uprawnień, DENYodmówić uprawnień i REVOKEusunąć GRANTlub DENY. Bez GRANTlub DENYużytkownik może dziedziczyć uprawnienia, powiedzmy od uzyskania dostępu do procedury przechowywanej.
DENY DELETE, INSERT, UPDATEkorzystasz z bazy danych lub schematu, uważam, że wpłynie to tylko na tabele i widoki.