当我执行以下查询时:
SELECT * FROM sys.dm_io_virtual_file_stats(NULL, NULL)
我收到了错误:
消息262,级别14,状态1,行4查看数据库状态权限 在数据库' master'中被拒绝。 Msg 297,Level 16,State 1,Line 4 The 用户无权执行此操作。
但我能够使用配置的(由SQL Azure门户网站)管理员用户执行此查询。
我无法将master(使用配置的管理员用户)查看DATABASE STATE给我创建的任何用户,我收到以下错误: 授予者没有GRANT权限。
任何想法如何执行查询
SELECT * FROM sys.dm_io_virtual_file_stats(NULL, NULL)
来自配置(由SQL Azure门户网站)管理员用户以外的用户?
答案 0 :(得分:5)
在SQL数据库上,Premium Tiers需要数据库中的VIEW DATABASE STATE权限。无法在Master中授予权限,但可以在用户数据库中查询视图。 在SQL数据库标准和基本层上,由于这些层的多租户之后的安全性要求,因此需要SQL数据库服务器管理员帐户。
答案 1 :(得分:2)
杰克是对的。
在多租户数据库层上,只有服务器管理员可以查询作用域的视图(需要VIEW SERVER STATE权限),并且具有view_database_state权限的任何人都可以查询那些作用于数据库的视图。
对于Premium数据库,DBO可以查询范围为服务器和数据库的DMV。
在服务器的主数据库上,没有人具有查看数据库/视图服务器权限。