在 SQL Azure 中,每个数据库都有大小限制(可调整)。为了让我的服务不会突然停止,我希望能够以编程方式找到当前的最大大小和当前实际使用的空间(并在达到某个阈值时生成并发出警报)。
看起来sp_mstablespace
可以用来解决这个问题,但是这个存储过程在 SQL Azure 中不可用。
如何在 SQL Azure 数据库中找到当前允许的最大大小和当前实际使用的空间?
在 SQL Azure 中,每个数据库都有大小限制(可调整)。为了让我的服务不会突然停止,我希望能够以编程方式找到当前的最大大小和当前实际使用的空间(并在达到某个阈值时生成并发出警报)。
看起来sp_mstablespace
可以用来解决这个问题,但是这个存储过程在 SQL Azure 中不可用。
如何在 SQL Azure 数据库中找到当前允许的最大大小和当前实际使用的空间?
您可以通过动态管理视图计算已用空间(参考页面在这里):
SELECT SUM(reserved_page_count)*8.0/1024
FROM sys.dm_db_partition_stats;
虽然我不认为您可以检索最大大小,但简单地将数据库设置为最大大小并没有什么坏处,因为您只需为使用的空间付费。话虽如此:如果您仅在 5GB 以下范围内,最好使用网络版。如果您已经超过 10 GB,则将最大大小设置为 150 GB 然后监控消耗的大小应该没有任何危害。
David 已经指出了如何查找数据库的当前大小,如果您想知道数据库的最大大小(以 MB 为单位),则需要在您感兴趣的数据库中运行以下查询:
SELECT CONVERT(BIGINT, DATABASEPROPERTYEX('DatabaseOfInterestName', 'MaxSizeInBytes')) / 1024