Utworzyłem schemat w SQL Azure i przyznałem następujące uprawnienia roli bazy danych:
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;
Dzięki wyżej zdefiniowanym uprawnieniom myuser
można tworzyć / upuszczać własny schemat, więc aby rozwiązać problem, wypróbowałem pozwolenie ALTER ANY SCHEMA. Ale to uprawnienie również odmawia użytkownikowi tworzenia / upuszczania tabel.
Jakie uprawnienia są wymagane, aby użytkownik mógł wykonać cokolwiek w ramach własnego schematu, ale nie mógł tworzyć ani upuszczać samego schematu?
źródło
Należy pamiętać, że ponieważ nowy schemat ma autoryzację „dbo”, użytkownik będzie mógł uzyskać pośredni dostęp do wszystkich obiektów bazy danych, w których schemat jest własnością dbo.
Przykład:
Jest to poprawne działanie silnika SQL Server; uprawnienia przenikają do innych schematów z tą samą autoryzacją. Aby ograniczyć taki dostęp, oto opcja tworzenia schematu:
źródło