【发布时间】:2011-07-02 10:25:50
【问题描述】:
我想授予一个用户对 SQL Server 2000 数据库的只读访问权限。我已将它们置于 db_datareader 角色中,它们可以很好地从表中选择,但是当它们尝试从视图中选择时,总是返回 0 行(视图在以 db_owner 身份运行时确实返回行)。
我如何才能授予该用户读取视图的访问权限,同时仍确保他们无法写入数据库?
【问题讨论】:
标签: sql-server sql-server-2000 roles
我想授予一个用户对 SQL Server 2000 数据库的只读访问权限。我已将它们置于 db_datareader 角色中,它们可以很好地从表中选择,但是当它们尝试从视图中选择时,总是返回 0 行(视图在以 db_owner 身份运行时确实返回行)。
我如何才能授予该用户读取视图的访问权限,同时仍确保他们无法写入数据库?
【问题讨论】:
标签: sql-server sql-server-2000 roles
GRANT SELECT ON [viewname] TO [user or role_name]
应该传播到视图中引用的所有对象
【讨论】:
如果他们得到零行,他们就拥有视图的权限。如果他们没有权利,他们会得到一个错误。
视图中的一些代码正在过滤,例如这个快速示例:
WHERE SUSER_SNAME() = 'dbo'
db_datareader on MSDN,我的大胆。对于 SQL Server 2005。
db_datareader 固定数据库角色的成员可以对数据库中的任何表或视图运行 SELECT 语句。
对于SQL Server 2000,它表示“从所有用户表中读取所有数据”。这略有不同。我一直认为这意味着表和视图,但我没有 SQL Server 2000 框可供检查
【讨论】: