为什么我不允许执行此查询?

时间:2013-04-19 14:03:43

标签: sql-server sql-server-2008

我在Sql Server 2008 R2数据库上有一个用户帐户,该帐户是db_datareader数据库角色的成员,没有其他权限。为什么不允许该用户执行以下SELECT语句?

SELECT * FROM sys.dm_db_partition_stats

我必须设置哪些权限才能允许他执行此查询,但仍然阻止他对数据库做任何有害的事情?

2 个答案:

答案 0 :(得分:7)

如果只有某种方式可以搜索网络,那么会引导您访问该产品的文档:

sys.dm_db_partition_stats

  

需要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>]