W przypadku tej roli db_denycustomer
chcę, aby można było WYBIERAĆ tylko kod kolumny tabeli klienta, i żaden z pozostałych. Więc zrobiłem to:
DENY SELECT ON dbo.customer TO db_denycustomer
GRANT SELECT ON dbo.customer (code) TO db_denycustomer
... i działa dobrze. Fajne! Ale dlaczego ?
W pokrewnych artykułach przeczytałem o stosie uprawnień, ale DENY
ma on pierwszeństwo. Natomiast w moim przypadku wydaje się, że ostatnie zapytanie „zapytanie” miało pierwszeństwo. Oczywiście, jeśli wykonam je w odwrotnej kolejności, ta druga również DENY
ukrywa kolumnę kodu.
Czy mógłbyś rozwinąć tę kwestię?
Podałem również domyślne db_datawriter
i db_datareader
role użytkownika, z którym testowałem.
źródło