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