2016-08-01 12 views
1

Ich arbeite an einem Projekt und in einer meiner Tabellen möchte ich Benutzer (beliebiger Benutzer) nicht in der Lage sein, Zeilen zu löschen, sofern die Löschung über eine gespeicherte Prozedur erfolgt .Das Löschen von Datensätzen durch Benutzer nicht zulassen, außer durch gespeicherte Prozedur

Es ist eine Frage, über dieses und hat eine Antwort hier https://stackoverflow.com/a/366931/4810628

Aber ich muss wissen, wie eine solche Politik in SQL Server zu erzwingen.

Dank

+1

Auslöser? Berechtigungen? Können Benutzer SQL-Befehle direkt ausführen? Wenn du versuchst, eine Sa zu stoppen, glaube ich nicht, dass es wirklich einen Weg gibt. – TZHX

+0

entfernen (DENY) alle Berechtigungen, um Löschungen in die Tabelle zu tun, fügen (GRANT) sie Berechtigungen zum Ausführen der gespeicherten proc –

+0

@CharlesBretana wo kann ich solche Einstellungen tun? – Alex

Antwort

1

remove (DENY) Berechtigungen des jeder löscht auf die Tabelle zu tun, fügen Sie (GRANT) ihnen Berechtigungen die gespeicherte Prozedur auszuführen.

+0

anstelle von bestimmten Benutzer in "TO Recruiting11;" Was soll ich verwenden, wenn ich es für jeder? – Alex

+0

Sie können Rollen verwenden. – TZHX

+0

Ja, wenn Sie tatsächlichen Benutzern erlauben, sich direkt mit der Datenbank zu verbinden, ordnen Sie sie einfach einer Rolle zu und weisen dann der Rolle Rollen (Gewähren/Verweigern) zu, nicht den einzelnen Benutzern. Besser ist es jedoch, wenn die mittlere Schicht ein Anwendungskonto verwendet, um eine Verbindung zur Datenbank herzustellen, und alle Benutzer die mittlere Schicht durchlaufen. –