Eu criei um esquema no SQL Azure e concedi as seguintes permissões a uma função de banco de dados:
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;
Através das permissões definidas acima, é myuser
possível criar / soltar seu próprio esquema, para superar o problema, tentei a permissão ALTER ANY SCHEMA. Mas essa permissão também nega que o usuário crie / descarte tabelas.
Quais permissões são necessárias para permitir que o usuário faça algo dentro de seu próprio esquema, mas não possa criar ou descartar o próprio esquema?
fonte
Observe que, como o novo esquema possui a autorização "dbo", o usuário poderá acessar indiretamente todos os objetos de banco de dados nos quais o esquema pertence ao dbo.
Exemplo:
Esta é a operação correta do mecanismo do SQL Server; permissões permeiam em outros esquemas com a mesma autorização. Para restringir esse acesso, aqui está uma opção para a criação do esquema:
fonte