Ich möchte einen "lesenden" Benutzer auf meiner SQL Server 2012-Instanz einrichten. Ich möchte ihm das Recht einräumen, gespeicherte Prozeduren, Funktionen oder direkte SQL-Anweisungen auszuführen, die Daten aus allen Tabellen und Ansichten abrufen, aber nicht aktualisieren oder einfügen (dh nichts lesen und nichts schreiben).
Kann ich dies einrichten, ohne jeder Funktion oder gespeicherten Prozedur namentlich Rechte zu erteilen, sondern ihm das Ausführungsrecht für jede Funktion oder gespeicherte Prozedur gewähren, indem ich nur das Recht zum Ändern von Tabellen wegnehme?
Wird sich etwas ändern, wenn ich stattdessen SQL Server 2008 ausführe?
Erläuterungen und Ergänzungen:
- Wenn eine gespeicherte Prozedur Daten ändert, sollte der Benutzer eine Fehlermeldung erhalten (entweder die Änderung verweigern oder den Zugriff auf die gespeicherte Prozedur vollständig verweigern).
- Wenn eine mögliche Lösung das Verweigern von Berechtigungen beinhaltet, kann ich dann bestimmte Berechtigungen nicht erteilen, anstatt sie zu verweigern?
- Kann eine Verweigerung auf alle Tabellen, Ansichten usw. (die jetzt und in Zukunft vorhanden sind) in der Datenbank in einer Anweisung angewendet werden?
GRANT
erteilen, Berechtigungen DENY
verweigern und REVOKE
ein GRANT
oder entfernen DENY
. Ohne GRANT
oder kann DENY
der Benutzer Berechtigungen erben, beispielsweise durch Zugriff auf eine gespeicherte Prozedur.
DENY DELETE, INSERT, UPDATE
in einer Datenbank oder einem Schema befinden, wirkt sich dies meiner Meinung nach nur auf Tabellen und Ansichten aus.