Para el rol db_denycustomer, solo quiero que el código de columna de la tabla del cliente sea SELECCIONABLE, y ninguno de los otros. Entonces hice esto:
DENY SELECT ON dbo.customer TO db_denycustomer
GRANT SELECT ON dbo.customer (code) TO db_denycustomer
... y funciona bien. ¡Frio! Pero, ¿por qué ?
Lo que he leído en artículos relacionados es que los permisos se acumulan, pero DENYtienen prioridad. Por el contrario, en mi caso, parece que la última "consulta" de permisos tuvo prioridad. Efectivamente, si los ejecuto en orden inverso, este último también DENYoculta la columna de código.
¿Podría por favor elaborar sobre esto?
También he incluido los valores predeterminados db_datawritery los db_datareaderroles para el usuario con el que probé.
fuente
