Как определить пользователя как dbo определенной схемы

Как определить пользователя как dbo определенной схемы

Я создаю многопользовательское приложение, которое будет использовать одну базу данных с несколькими схемами. У каждого арендатора будет свой собственный логин/пароль. Мне удалось ограничить разрешения на просмотр определенной схемой.

Единственная проблема, с которой я сталкиваюсь, — это обновление схем. В настоящее время я вхожу в систему с помощью кода C#, используя соответствующие учетные данные схемы, а затем запускаю код SQL всякий раз, когда хочу обновить определенную (или все) схемы.

Сначала я попытался изменить таблицу, а затем понял, что у меня недостаточно прав. Поэтому я снова настроил права. Теперь я пытаюсь добавить индексацию полного текста во все схемы, и мне говорят, что у меня нет прав.

Мой вопрос прост: как мне определить права доступа пользователя, чтобы the database owner for a specific schemaне возникло проблем ни с одним скриптом, запущенным в базе данных.

решение1

GRANT CONTROL ON SCHEMA::<schemaname> TO <username>;предоставлю все разрешенияприменимо к схемам и объектам, содержащимся в схемах. Однако это не даст никаких разрешений, применимых к несхемным объектам. В данном случае это не относится к полным текстовым каталогам, которыенетобъекты, привязанные к схеме (при создании каталога FT схема не указывается) и требующие специального CREATE FULLTEXT CATALOGразрешения.

В вашем случае вам нужно пересмотреть всю модель безопасности и решить, какие разрешения и действия требуются/разрешены вашим арендаторам. Не существует простого универсального ответа. Если вы предоставляете своим арендаторам свободу действовать как полный владелец базы данных, то вам нужно предоставить им настоящую базу данных. Вы не сможете пробраться в схему и притвориться базой данных. Модель безопасности SQL просто не работает таким образом, и вам лучше подыграть ей, чем пытаться обойти ее.

решение2

Я не думаю, что это возможно. Если они dbo, то они могут делать все необходимое в этой базе данных. Если они не dbo, то они ограничены. Владелец базы данных означает именно это — владельца этой базы данных.

Связанный контент