Настройка пользователя для моей базы данных на моем SQL Server - PullRequest
2 голосов
/ 11 августа 2010

Я только что закончил создание нового пользователя для своей базы данных в SQL Server.У меня было 4 таблицы, которые я хотел предоставить разрешениям на вставку, обновление, выбор и удаление.Я сделал это вручную в области Securables нового пользователя.

Есть ли лучший способ сделать это, чтобы прикасаться к каждому объекту?если да, то как?

Спасибо,

Стержень.

Ответы [ 2 ]

4 голосов
/ 11 августа 2010

Одним из способов является использование схем таким образом, чтобы

  • таблицы принадлежали схеме (назовем ее данными, CREATE SCHEMA)
  • пользователи принадлежат роли (CREATE ROLE,sp_addrolemember)
  • разрешения назначены роли в схеме (GRANT INSERT ON schema::data to myRole)

Теперь вы можете добавлять новые таблицы или изменять пользователей без потери / создания разрешений

2 голосов
/ 11 августа 2010

Если вам нужен детальный контроль над тем, кто может что-то делать, я не думаю, что вы можете многое сделать - у вас все отлично.

Подход gbn довольно изящен - другой подход для «простых» установок (когда вам не нужно много разных разрешений) заключается в:

  • предоставить каждому пользователю (или роли) роль базы данных db_datareader - это разрешает доступ на чтение (ВЫБРАТЬ) для всех таблиц и представлений

  • предоставить каждому пользователю (или роли) роль базы данных db_datawriter - это дает доступ на запись (INSERT, UPDATE, DELETE) для всех таблиц и представлений

Если вам также необходимо предоставить права на выполнение хранимых процедур, к сожалению, нет предопределенной роли для использования. Однако вы можете создать свою собственную роль базы данных, а затем предоставить разрешения на выполнение этой роли. Самое замечательное в том, что это разрешение на выполнение хранимых процедур также распространяется на все будущие хранимые процедуры, которые вы можете создать в своей базе данных!

Чтобы определить свою новую роль, используйте это:

CREATE ROLE db_executor
GRANT EXECUTE TO [db_executor]

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

...