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

okr*_*now 0 sql-server sql-server-2008

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

SELECT * FROM sys.dm_db_partition_stats
Run Code Online (Sandbox Code Playgroud)

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

muh*_*mud 8

您需要为此授予VIEW DATABASE STATE

grant VIEW DATABASE STATE to [<YourUser>]
Run Code Online (Sandbox Code Playgroud)


Dam*_*ver 7

如果只有某种方式搜索网络,将导致您到产品的文档:

sys.dm_db_partition_stats:

需要VIEW DATABASE STATE权限才能查询sys.dm_db_partition_stats动态管理视图.有关动态管理视图权限的详细信息,请参阅动态管理视图和函数(Transact-SQL).

并且db_datareader(好吧,我承认这个有点难以找到):

该成员拥有db_datareader固定的数据库角色可以从所有读取的所有数据用户表.

我的重点

  • 我去了谷歌。它把我带到这里-解决了我的问题。:) (2认同)