我在Sql Server 2008 R2数据库上有一个用户帐户,该帐户是db_datareader
数据库角色的成员,没有其他权限。为什么不允许该用户执行以下SELECT语句?
SELECT * FROM sys.dm_db_partition_stats
我必须设置哪些权限才能允许他执行此查询,但仍然阻止他对数据库做任何有害的事情?
答案 0 :(得分:7)
如果只有某种方式可以搜索网络,那么会引导您访问该产品的文档:
需要VIEW DATABASE STATE权限才能查询 sys.dm_db_partition_stats 动态管理视图。有关动态管理视图权限的详细信息,请参阅Dynamic Management Views and Functions (Transact-SQL)。
和db_datareader
(好吧,我承认这个是小难以找到的):
db_datareader 固定数据库角色的成员可以读取所有用户表中的所有数据。
我的重点
答案 1 :(得分:3)
您需要为此授予VIEW DATABASE STATE
:
grant VIEW DATABASE STATE to [<YourUser>]