Роли, схемы, пользователи SQL Server
Я пытался выяснить, почему SQL Server имеет db_owner
схему и db_owner
роль? Это очень запутанно. Я искал ответы, и до сих пор я так понимаю:
- Все таблицы и объекты (такие как ограничения и т.д.) относятся к схеме.
DBO
является стандартной схемой.
- Пользователю может быть разрешено редактировать каждый объект или схему. Разрешение на схему расширяет разрешение для всех объектов в этой схеме. Таким образом, вам не нужно предоставлять разрешение на каждый отдельный объект.
- Разрешения групп групп вместе для удобства.
Если это неверно, сообщите мне. Но я думаю, что пока все хорошо. Теперь мои вопросы:
- Что такое схема
db_owner
, как показано в диалоговом окне "Пользователь базы данных" в SQL Server Management Studio? И в том же диалоговом окне вы определяете "Схема по умолчанию" как DBO
. Почему не два одинаковые? Если по умолчанию SQL Server использует DBO
для создания всех объектов, для которых используется db_owner
?
- Почему пользователь хочет иметь схему? Вы назначаете разрешения/роли уже. Что дает вам
db_accessadmin
?
- Можете ли вы привести пример создания объектов в схеме
db_owner
и db_accessadmin
? Другими словами, кто-то законно использует эти схемы?
Ответы
Ответ 1
Схема SQL Server - это просто контейнер объектов, таких как таблицы, хранимые процедуры и т.д. Роль базы данных - это группа участников, таких как логины Windows, пользователи sql-сервера и т.д.
Идея заключается в том, что вы можете играть роль "ИТ" и иметь всех ИТ-пользователей под эту роль. Тогда у вас есть схема под названием "ИТ", и при этом есть все таблицы, относящиеся к ИТ. Вне коробки SQL Server создает соответствующие схемы для каждого пользователя и роли по умолчанию в базе данных, но я думаю, что вы настроите это так, чтобы оно соответствовало потребностям вашей организации.
В этой статье содержится дополнительная информация о различиях между владельцами и схемами. Этот вопрос о переполнении стека также может быть полезен.
Ответ 2
Я цитирую нижеследующее из следующей ссылки.
https://msdn.microsoft.com/en-us/library/bb669061(v=vs.110).aspx
SQL Server поставляется с десятью заранее определенными схемами, которые имеют те же имена, что и встроенные пользователи и роли базы данных. Они существуют в основном для обратной совместимости. Вы можете отказаться от схем, которые имеют те же имена, что и фиксированные роли базы данных, если они вам не нужны. Вы не можете отказаться от следующих схем:
-
dbo
-
guest
-
sys
-
INFORMATION_SCHEMA