Hace poco quería compartir derechos de acceso regulares con un usuario de un servidor y me di cuenta de que un simple CREATE USERy los GRANT ALL ON DATABASEcomandos no le permitieron ejecutar un simple SELECTen los datos.
Me gustaría otorgar derechos a todas las tablas de una base de datos dada a un usuario específico, pero no estoy seguro de si es la mejor idea otorgarle acceso a todo el esquema, publicya que no sé si permitiría algún tipo de privilegio escalada. ¿Hay alguna otra manera?

GRANT SELECT ON TableName TO [Domain\User]? Por lo general, solo asigno usuarios a ladb_datareaderfunción si todo lo que necesitan es acceso de lectura a todas las tablas, pero no estoy seguro de cuán granular quiere ser.Respuestas:
El privilegio
DATABASEsolo otorga derechos de conexión generales a la base de datos y no más. Un usuario con ese privilegio solo puede ver lo que el público en general puede ver.Para otorgar acceso de lectura a todas las tablas , también necesita privilegios en todos los esquemas y tablas:
También es posible que desee establecer privilegios predeterminados para futuros esquemas y tablas. Corre por cada rol que cree objetos en tu base de datos
Pero realmente necesitas entender todo el concepto primero.
Y casi siempre es mejor agrupar privilegios en roles grupales y luego otorgar / revocar el rol grupal a / desde roles de usuario. Relacionado:
fuente
myusrun error tipográfico? ¿No debería sermyuser?