#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
Системный администратор имеет полное разрешение на чтение, запись, удаление и просмотр всех объектов в базе данных.
Вот ссылка:
Комментарии:
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».