Вы можете назначить пользователю роли db_datareader
& db_datawriter
для схемы dbo
.
Однако, чтобы позволить пользователю создавать и изменять только новые таблицы; вам придется создать другую схему и назначить, например, db_owner
разрешения для этой схемы.
Вы должны знать, что это может создать проблемы, поскольку у вас могут быть две таблицы с одинаковыми именами в разных схемах. Поэтому вы должны убедиться, что в ваших запросах всегда указывается владелец объекта.
, например
dbo.MyTable
CustomSchema.MyTable
UPDATE:
Хорошо, я думаю, что вам нужно предпринять следующие шаги:
- Создайте новую роль базы данных, например,
db_ReportingRole
и добавьте в эту роль соответствующего пользователя.
- Создайте новую схему, например,
Reporting
и сделайте db_ReportingRole
владельцем этой схемы.
- Назначьте соответствующие разрешения
CREATE
, DROP
и т. Д. Для db_ReportingRole
- Убедитесь, что тот же пользователь, который был добавлен ранее, входит в роли
db_datareader
и db_datawriter
для схемы dbo
.
Это должно позволить вам иметь пользователя, который может читать и писать в схему dbo
, но должен иметь возможность изменять таблицы и т. Д. Однако, поскольку они в db_ReportingRole
должны иметь полный доступ для изменения, создания, сбросить таблицу etc в схеме Reporting
. (При условии, что вы назначили правильные разрешения для db_ReportingRole
Я надеюсь, что это работает для вас.