Con esta técnica evitamos que los desarrolladores utilicen SELECT * FROM en su código. Por cada tabla, añadir un campo "nousesasterisco", al que más adelante le denegaremos el acceso de lectura:
ALTER TABLE dbo.[tabla] ADD nousesasterisco char(1) NULL GO [...]
Denegamos el SELECT en esa columna por cada tabla:
DENY SELECT ON OBJECT:: dbo.[tabla](nousesasterisco) TO [rol_deniega];
Tras asignar el rol "rol_deniega" a los usuarios de la aplicación, les aparecerá este mensaje:
SELECT * FROM dbo.tabla; --Result Msg 230, Level 14, State 1, Line 1 The SELECT permission was denied on the column 'nousesasterisco' of the object 'tabla', database 'Pruebas', schema 'dbo'.