我有一个用户,我想只读访问SQL Server 2000数据库。我已将它们放在db_datareader角色中,并且可以从表中选择,但是当它们尝试从视图中进行选择时,总会返回0行(当以db_owner的形式运行时,视图会返回行。)
如何在确保无法写入数据库的同时授予此用户读取视图的权限?
答案 0 :(得分:1)
GRANT SELECT ON [viewname] TO [user or role_name]
应传播到视图中引用的所有对象
答案 1 :(得分:0)
如果视图获得零行,则他们对视图具有权限。如果他们没有权利,他们会收到错误。
视图中的某些代码正在过滤,例如此快速示例:
WHERE SUSER_SNAME() = 'dbo'
db_datareader on MSDN,我的大胆。对于SQL Server 2005。
db_datareader固定数据库角色的成员可以对数据库中的任何表或视图运行SELECT语句。
对于SQL Server 2000,它说“读取所有用户表中的所有数据”。这略有不同。我一直认为这意味着表和视图,但我没有SQL Server 2000框来检查