SQL Azure中的VIEW DATABASE STATE权限在数据库'master'中被拒绝。

8
当我执行以下查询时:
SELECT * FROM sys.dm_io_virtual_file_stats(NULL, NULL)

我遇到了以下错误:
Msg 262,级别14,状态1,第4行“master”数据库中未授予VIEW DATABASE STATE权限。 Msg 297,级别16,状态1,第4行用户没有执行此操作的权限。
但是我可以使用通过SQL Azure门户提供的管理员用户执行此查询。
我无法为主文件库授予VIEW DATABASE STATE(使用提供的管理员用户)给我创建的任何用户,我收到以下错误消息: Grantor does not have GRANT permission.
有什么想法能够执行此查询吗?
SELECT * FROM sys.dm_io_virtual_file_stats(NULL, NULL)

是否可以从SQL Azure门户外提供的用户中获取数据,而不是由管理员用户提供(通过SQL Azure门户)?


1
您的数据库属于哪种定价级别?是基础、标准还是高级? - Jack Richins
2个回答

5

在SQL数据库高级层中,需要拥有数据库中的“查看数据库状态”权限。这些权限无法在主数据库中授予,但可以在用户数据库中进行查询。 在SQL数据库标准层和基础层中,由于这些层次的多租户安全要求,需要使用SQL数据库服务器管理员帐户。


有没有一个链接可以解释一下这个问题? - datadev
在 SQL 数据库标准版和基本版中,需要使用 SQL 数据库服务器管理员帐户。在我的情况下,服务器和数据库的凭据是相同的... 我该如何仅连接到服务器以便执行查询? - sports

3

杰克是正确的。

在多租户数据库层中,只有服务器管理员可以查询那些针对服务器范围的视图(需要VIEW SERVER STATE权限),而那些针对数据库范围的视图则可以被拥有view_database_state权限的任何人查询。

对于高级数据库,DBO可以查询那些针对服务器和数据库范围的DMV。

在服务器的主数据库上,没有人拥有查看数据库/查看服务器权限。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接