Soy muy ecológico cuando se trata del mundo de la administración de permisos de bases de datos en SQL Sever.
Mantengamos un ejemplo simple.
Digamos que la cuenta «admin» es el propietario de los esquemas A, B y C.
Hay otra cuenta «minion» que desea tener todos los derechos (actualizar / eliminar / insert / select / alter) en cualquier objeto (tabla / vista) creado bajo los esquemas A, B y C.
¿Es esto posible? ¿O tiene que ejecutar una declaración de subvención cada vez que agrega una tabla / vista bajo estos esquemas? (me parece un poco tonto).
Responder
Puedes GRANT
permisos de esquema que son efectivos para todo lo que existe y todo lo que existirá en ese esquema.
GRANT SELECT, INSERT, UPDATE, DELETE ON SCHEMA :: <schema> TO <user>;
Además de eso, si desea denegar permisos en un determinado objeto dentro de ese esquema, puede hacerlo.
DENY INSERT ON OBJECT::<schema>.<object> TO <user>;
Comentarios
Responder
Para simplificar un poco más, puede usar roles para hacer el trabajo que está buscando.
Una vez que asigne permisos a la función, puede simplemente agregar usuarios a la función. De esta manera, no tiene que administrar permisos para usuarios individuales. Los usuarios heredan los permisos otorgados al rol.
A continuación se muestra un ejemplo para comenzar:
-- Create the database role CREATE ROLE TableSelector AUTHORIZATION [dbo] GO ---- Grant access rights to a specific schema in the database GRANT SELECT, INSERT, UPDATE, DELETE, ALTER ON SCHEMA::dbo TO TableSelector GO -- Add an existing user to the new role created EXEC sp_addrolemember "TableSelector", "MyDBUser" GO -- Revoke access rights on a schema from a role DENY ALTER -- you can customize here ... ON SCHEMA::dbo TO TableSelector
.... SCHEMA :: [schema] TO [company-name/joshua.duxbury]