为什么我的数据库大小查询返回 Null?

Why is my Database Size Query Returning Null?

提问人:saedarm 提问时间:11/11/2023 最后编辑:marc_ssaedarm 更新时间:11/17/2023 访问量:57

问:

我在 Azure 中托管了 SQL Server,并且已连接到 Azure Data Studio。

我运行如下所示的查询(推荐查询),并为服务器上的每个数据库返回 null。我错过了什么吗?

with fs as
(
    select database_id, type, size * 8.0 / 1024 size
    from sys.master_files
)
select top 10
    name,
    (select sum(size) from fs where type = 0 and fs.database_id = db.database_id) DataFileSizeMB,
    (select sum(size) from fs where type = 1 and fs.database_id = db.database_id) LogFileSizeMB
from 
    sys.databases db
order by 
    DataFileSizeMB desc

我只看到以下屏幕截图中显示的结果:

Results

SQL-Server Azure

评论

0赞 Stu 11/11/2023
您是否检查了您正在使用的登录名是否具有足够的权限。
0赞 siggemannen 11/11/2023
文件中有一些可能会影响查询的位置。如果运行会发生什么情况:select * from sys.master_files
1赞 AlwaysLearning 11/11/2023
查看相应行所需的最低权限是 CREATE DATABASE、ALTER ANY DATABASE 或 VIEW ANY DEFINITION。Ref: sys.master_files 你有这些权限吗?

答:

0赞 Bhavani 11/17/2023 #1

根据 MS 文档,用户应具有查看相应行所需的最低权限:、 或 。CREATE DATABASEALTER ANY DATABASEVIEW ANY DEFINITION

若要添加上述权限,请使用以下命令:

use master
grant ALTER ANY DATABASE to <user>
grant VIEW ANY DEFINITION to <user>
grant CREATE ANY DATABASE to <user>

enter image description here

然后,您将能够获得如下所示的数据库大小:

| name   | DataFileSizeMB | LogFileSizeMB |
| ------ | -------------- | ------------- |
|    db  | 392.000000     | 392.000000    |
| tempdb | 64.000000      | 8.000000      |
| msdb   | 19.687500      | 28.812500     |