SQL Server db_owner - PullRequest
       0

SQL Server db_owner

1 голос
/ 07 июня 2010

в моем SQL2008 у меня есть пользователь, который находится в ролях БД "db_datareader", "db_datawriter" и "db_ddladmin", однако, когда он пытается изменить таблицу с помощью SSMS, он получает сообщение:

Вы не вошли как владелец базы данных или системный администратор. Возможно, вы не сможете сохранить изменения в таблицах, которые вам не принадлежат.

Конечно, я хотел бы избежать такого сообщения, но до сих пор я нашел способ ... Поэтому я пытаюсь изменить пользователя, добавив его в роль "db_owner", и, конечно, у меня нет сообщения выше.

Мой вопрос:

  • Можно ли оставить пользователя в роли "db_owner", но запретить некоторые действия, такие как изменение пользователя или? Я пытаюсь "изменить любого пользователя" на уровне БД, но он не работает ...

СПАСИБО!

Ответы [ 4 ]

1 голос
/ 07 июня 2010

Я всегда понимал, что любой пользователь с правами db_owner может сделать что угодно с базой данных, вплоть до ее удаления. Конечно, это было верно в SQL 2005. Я ничего не слышал о том, что это изменилось в SQL 2008.

1 голос
/ 07 июня 2010

Если пользователь является частью db_ddladmin, это не должно быть проблемой. Это всего лишь предупреждение

1 голос
/ 07 июня 2010

Члены фиксированной роли базы данных db_ddladmin могут выполнять любую команду языка определения данных (DDL) в базе данных. Вероятно, это просто предупреждение от SSMS, попробуйте создать пользователя и попытаться изменить некоторые таблицы

0 голосов
/ 27 ноября 2010

Это действительно предупреждения, и я не вижу способа отключить этот тип предупреждения в SSMS.

В 2008R2 поведение, которое я наблюдаю, состоит в том, что пользователям с «db_datareader», «db_datawriter» и «db_ddladmin» все еще необходимо предоставить определение вида, чтобы иметь возможность вносить изменения в SSMS, щелкая правой кнопкой мыши и выбирая дизайн. Если вы не предоставили определение представления, то представление дизайна откроется (с предупреждениями) только для чтения.

См .: MSFT Connect Bug

Мне кажется более доступным назначать разрешения определений представлений пользователям ddladmin через роль, а не делать это для определенных учетных записей пользователей, как указано в обходном пути в Connect. Это добавит роль базы данных db_definitionviewer:

USE <DB Name>;
CREATE ROLE db_definitionviewer;
GRANT VIEW DEFINITION TO db_definitionviewer;
EXEC sp_addrolemember 'db_definitionviewer', '<DOMAIN\group> | <DOMAIN\User>';
...