Я создал схему в SQL Azure и предоставил следующие разрешения для роли базы данных:
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;
Через определенные выше разрешения myuser
можно создавать / отбрасывать свою собственную схему, поэтому для преодоления проблемы я попробовал разрешение ALTER ANY SCHEMA. Но это разрешение также запрещает пользователю создавать / удалять таблицы.
Какие разрешения необходимы для того, чтобы пользователь мог что-либо делать в своей собственной схеме, но не мог создавать или удалять саму схему?
источник
Обратите внимание, что, поскольку новая схема имеет полномочия «dbo», пользователь сможет косвенно обращаться ко всем объектам базы данных, где схема принадлежит dbo.
Пример:
Это правильная работа механизма SQL Server; разрешения проникают в другие схемы с той же авторизацией. Чтобы ограничить такой доступ, вот вариант для создания схемы:
источник