Bei so hoher Granularität der nötigen Zugriffsrechte solltest du dir eine Mehrschichtarchitektur überlegen.
Die
DBMS sind nicht dafür gedacht so genau die Zugriffsrechte zu vergeben.
Das sehe ich nicht so. Was nimmt die Zwischenschicht Dir da ab? Und was, wenn mehrere Systeme mit der
DB arbeiten?
I.d.R. wird immer nur die SW von einem Hersteller auf der
DB arbeiten. Und diese bietet dann ein
API zum Zugriff an. Ein direkter Zugriff von "Hilfsanwendungen" wird nicht unterstützt (Garantie/Gewährleistung/Support).
DBServer sind genau dafür gedacht, es gibt schon länger Berechtigungsverfahren auf Feldebene, die das Problem des TE direkt lösen. Das kostet u.U. extra bzw. ist leider nicht unbedingt standardisiert.
Code:
GRANT SELECT[,UPDATE,..] ON dbo.[myTable] (Field01, Field03, Field17) TO <user|role>;
Hast du die Problemstellung gelesen? Dein GRAND-Befehl löst sein Problem nicht vollständig, da die Sicherheit maximal auf Spaltenebene erfolgt. Er braucht es aber auf Zellenebene!
Fragestellung: Wie willst du die eigentliche Anforderung per Grand-Befehl genau abbilden? Gibt doch das vollständige Beispiel für die Fragestellung an.
Windows Vista - Eine neue Erfahrung in Fehlern.