Почему SQL Server создает схемы для начальных ролей БД? - PullRequest
4 голосов
/ 16 сентября 2011

Почему SQL Server создает схемы для начальных ролей БД, таких как db_accessadmin, db_datareader и т. Д.? Я понимаю роли и почему они существуют, но я не понимаю, почему им дают схемы при создании базы данных. Кто-нибудь их использует? Я не могу себе представить, что Microsoft рекомендует добавлять таблицы к ним. Я не вижу добавления таблицы сотрудников или продуктов в db_datawriter. Есть ли какие-то скрытые системные объекты, которыми они владеют?

Ответы [ 2 ]

3 голосов
/ 16 сентября 2011

Другие говорят, что унаследованная / обратная совместимость на самом деле не объясняется.

Когда был представлен SQL Server 2005, они представили разделение пользователя / схемы .До этого времени каждый пользователь и роль неявно имели связанную с ним схему с одинаковым именем (и не было никакого способа создавать схемы, кроме как путем создания пользователей или ролей).

Итак, для встроенныхролей, которые существовали в 2000 (или более ранних) версиях SQL Server, в базе данных всегда была «доступная» схема с тем же именем, что и у этой роли.Таким образом, некоторый код мог быть написан, предполагая, что такие схемы существуют;более поздние версии SQL Server гарантируют, что это все еще верно, чтобы избежать взлома такого кода.

1 голос
/ 16 сентября 2011

Legacy.

Вы должны использовать явный GRANT (скажем, GRANT ALTER USER TO ...) вместо использования устаревших фиксированных ролей базы данных.

Если вы используете sp_grantdbaccess вы также получаете созданную схему: вы должны использовать CREATE USER

...