У меня есть пользователь с ролью db_datareader в SQL Server 2008. Мне нужно, чтобы этот пользователь мог видеть хранимые процедуры, функции, скрипты таблиц и т. Д.
Какая это роль? Я не хочу, чтобы пользователь запускал сценарии DDL (изменял таблицы или процедуры). Я просто хочу, чтобы пользователь мог читать что угодно в базе данных.
Спасибо!
Вы ищете VIEW DEFINITION
.
Вы можете предоставить принципалу VIEW DEFINITION
в различных областях (сервер, база данных, схема, конкретный объект).
Пример хранимой процедуры:
Use MyDB
GRANT VIEW DEFINITION ON p_MyProc TO SomeUser
Для всех объектов в базе данных:
Use MyDB
GRANT VIEW DEFINITION TO SomeUser
Для всех объектов на сервере:
USE master
GRANT VIEW ANY DEFINITION TO SomeUSer
Примечание: при предоставлении разрешений на уровне сервера участник должен также иметь доступ на уровне базы данных, чтобы просматривать определения в базе данных.