Sie haben 3 Möglichkeiten:
- Zugriff über gespeicherte Prozeduren erlauben, wenn Sie protokollieren wollen (und Tabellenrechte entfernen)
- die Tabelle hinter einer Ansicht zu verstecken, wenn Sie den "direkten" Zugriff einschränken und beibehalten wollen
- eine permanente Verfolgung durchführen
Ich würde mich für die Optionen 1 oder 2 entscheiden, da sie Teil Ihrer Bewerbung und in sich abgeschlossen sind.
Allerdings scheint es etwas spät zu sein, mit der Protokollierung zu beginnen: Der Zugang zum Tisch hätte von vornherein eingeschränkt werden müssen.
Außerdem schlägt jede Lösung fehl, wenn die Endnutzer nicht direkt korrigieren (z. B. über den Webserver oder das Dienstkonto). Es sei denn, Sie verwenden gespeicherte Prozeduren, um den Endbenutzernamen zu senden...
Beispiel ansehen:
CREATE VIEW dbo.MyTableMask
AS
SELECT *
FROM
MyTable
CROSS JOIN
(SELECT 1 FROM SecurityList WHERE name = SUSER_SNAME())
--WHERE could use NOT EXISTS too with table
GO