Как создать роль пользователя sql, которая имеет полное разрешение на чтение, запись, удаление и просмотр всех объектов в базе данных?

#sql #sql-server

#sql #sql-server

Вопрос:

Как создать роль пользователя sql, которая имеет полное разрешение на чтение, запись, удаление и просмотр всех объектов в базе данных?

Все объекты — SP, представления, таблицы, функции, триггеры….

Будет полезно иметь полный синтаксис . Не шаги GUI. Я могу выполнить шаги в графическом интерфейсе. Мне просто нужен синтаксис, который создаст роль пользователя для пользователя из задания SQL.

Это мой текущий синтаксис, это будет полезно…

 CREATE USER [MyUser] FOR LOGIN [MyUser]  
ALTER ROLE [db_datareader] ADD MEMBER [MyUser]  
ALTER ROLE [db_owner] ADD MEMBER [MyUser]  
go
 

Комментарии:

1. Если я не ошибаюсь, роль db_owner уже покрывает эти конкретные потребности.

2. Когда вы вносите изменения с помощью SSMS, у вас есть возможность сохранить эти изменения в виде сценария. Это позволяет вам просматривать команды, которые SSMS генерирует для выполнения каких-либо действий. Вы также должны подумать о том, что вы спрашиваете. Эти разрешения не применяются ко «всем объектам». Вы не читаете процедуры, вы их выполняете. И если вы уже назначили разрешения пользователю / роли, затем используйте параметры сценариев для этого пользователя / роли.

Ответ №1:

 Use masters; 

CREATE SERVER ROLE role_name AUTHORIZATION sysadmin;  
GO  
 

Системный администратор имеет полное разрешение на чтение, запись, удаление и просмотр всех объектов в базе данных.

Вот ссылка:

https://docs.microsoft.com/en-us/sql/relational-databases/security/authentication-access/create-a-server-role?view=sql-server-2017

Комментарии:

1. Это мой текущий синтаксис .. это будет полезно.. СОЗДАТЬ ПОЛЬЗОВАТЕЛЯ [MyUser] ДЛЯ ВХОДА В СИСТЕМУ [MyUser] ИЗМЕНИТЬ РОЛЬ [db_datareader] ДОБАВИТЬ УЧАСТНИКА [MyUser] ИЗМЕНИТЬ РОЛЬ [db_owner] ДОБАВИТЬ УЧАСТНИКА [MyUser] перейти

2. Да, ваш синтаксис правильный. Но если [MyUser] имеет членство в роли [db_owner], он может делать что угодно внутри базы данных. Нет необходимости добавлять [db_datareader] .

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

4. кроме того, я не собираюсь создавать роль сервера в качестве системного администратора. только db_owner. Пожалуйста, поправьте меня, нужно ли мне также указывать sysadmin???

5. @goofyui Если вы дадите им только [db_datareader] , пользователи смогут использовать оператор SELECT для всех таблиц и представлений в базе данных. Пользователи не могут удалять какие-либо записи, но они могут видеть хранимые процедуры. Один простой пример — «выбрать * из sys.procedures».