Creé un esquema en SQL Azure y otorgué los siguientes permisos a un rol de base de datos:
CREATE ROLE myrole AUTHORIZATION dbo;
EXEC sp_addrolemember 'myrole', 'myuser';
CREATE SCHEMA myschema AUTHORIZATION dbo;
GRANT ALTER, CONTROL, DELETE, EXECUTE, INSERT, REFERENCES, SELECT, UPDATE, VIEW
DEFINITION ON SCHEMA::myschema TO myrole;
GRANT CREATE TABLE, CREATE PROCEDURE, CREATE FUNCTION, CREATE VIEW TO myrole;
A través de los permisos definidos anteriormente myuser
puede crear / eliminar su propio esquema, por lo que para superar el problema probé el permiso ALTERAR CUALQUIER ESQUEMA. Pero este permiso también niega al usuario crear / soltar tablas.
¿Qué permisos son necesarios para permitir que el usuario haga algo dentro de su propio esquema pero no pueda crear o descartar el esquema en sí?
fuente
Tenga en cuenta que dado que el nuevo esquema tiene la autorización de "dbo", el usuario podrá acceder indirectamente a todos los objetos de la base de datos donde dbo posee el esquema.
Ejemplo:
Esta es la operación correcta del motor de SQL Server; Los permisos penetran en otros esquemas con la misma autorización. Para restringir dicho acceso, aquí hay una opción para la creación del esquema:
fuente