Как предоставить права выбора для представлений в SQL Server 2000?

У меня есть пользователь, которому я хочу предоставить доступ только для чтения к базе данных SQL Server 2000. Я поместил их в роль db_datareader, и они могут нормально выбирать из таблиц, но когда они пытаются выбрать из представления, всегда возвращается 0 строк (представление возвращает строки при запуске от имени db_owner).

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


person Simon    schedule 23.02.2011    source источник


Ответы (2)


ПРЕДОСТАВЬТЕ ВЫБОР [имя представления] КОМУ [пользователь или имя_роли]

должен распространяться на все объекты, на которые есть ссылки в представлении

person jenson-button-event    schedule 23.02.2011

У них есть разрешения на представление, если они получают нулевые строки. Они получили бы ошибку, если бы у них не было прав.

Некоторый код в представлении является фильтрующим, например, этот краткий пример:

WHERE SUSER_SNAME() = 'dbo' 

db_datareader в MSDN, мой жирный шрифт. Для SQL Server 2005.

Члены фиксированной роли базы данных db_datareader могут запускать оператор SELECT для любой таблицы или представления в базе данных.

Для SQL Server 2000 указано: "Читает все данные из всех пользовательских таблиц". ." что немного отличается. Я всегда думал, что это означает таблицы и представления, но у меня нет поля SQL Server 2000, чтобы проверить

person gbn    schedule 23.02.2011