Ich habe sensible Preisspalten, die ich nur über eine gespeicherte Prozedur aktualisieren lassen möchte. Ich möchte, dass alle Code- oder manuellen Versuche, Werte in diesen Preisspalten zu ändern, fehlschlagen, wenn nicht die gespeicherten Prozeduren zum Aktualisieren verwendet werden.
Ich denke darüber nach, dies mithilfe von Triggern und einer Tokentabelle zu implementieren. Die Idee, über die ich nachdenke, ist eine Token-Tabelle. Die gespeicherten Prozeduren müssen zuerst Werte in die Tokentabelle einfügen. Aktualisieren Sie anschließend die Preisspalten. Der Update-Trigger prüft, ob das Token in der Token-Tabelle für die aktualisierte Zeile vorhanden ist. Wenn es gefunden wird, wird es fortgesetzt. Wenn das Token nicht gefunden wird, wird eine Ausnahme ausgelöst und die Aktualisierungstransaktion schlägt fehl.
Gibt es eine gute / bessere Möglichkeit, diese Einschränkung umzusetzen?
Antworten:
SQL Server ermöglicht Berechtigungen auf Spaltenebene. Nur zum Beispiel:
quelle
SampleRole
mit diesem Benutzer ersetzen ...quelle
Wenn alle Ihre Benutzer das gleiche Login haben (autsch, BTW), dann ist hier eine andere Option
dbo
.Den regulären Anwendungsbenutzern fehlen Aktualisierungsrechte für diese Tabelle, sodass sie sie auf keine andere Weise aktualisieren können.
quelle