Newbie-DBA Asked: 2021-05-22 11:27:49 +0800 CST2021-05-22 11:27:49 +0800 CST 2021-05-22 11:27:49 +0800 CST 数据库未分配空间 - 正确的测量方法 772 我对网络重新计算数据库大小和可用空间的几个脚本感到困惑。 Web 上的大多数脚本都使用 sys.databases_files dmv 来计算可用空间,例如此处和此处 但是,如果我们通过 GUI 从 sp_spaceused 或数据库属性中看到一个可用空间量是不同的。我得到它是差异的原因,因为它在 (0,2,4) 中的类型上有过滤器,它不包括日志文件。 但我无法理解哪一个是正确的以及为什么日志文件被排除在 sp_spaceused 之外,还是 web 上的脚本不正确并显示其他内容? sql-server sql-server-2012 1 个回答 Voted Best Answer J.D. 2021-05-22T16:59:19+08:002021-05-22T16:59:19+08:00 您必须提供您所指的脚本,以便我们能够就其准确性向您提供建议,但如果它们是基于DMVsys.database_files的,那么您很有可能正在寻找适合他们目的的东西'的目的。 sp_spaceused专门设计用于告诉您数据库内数据的大小,无论是整个数据库本身还是单个表或索引视图: 显示当前数据库中表、索引视图或Service Broker队列的行数、保留的磁盘空间和使用的磁盘空间,或显示整个数据库保留和使用的磁盘空间。 事务日志存储在不同的文件中,与数据库及其文件相比,它是一种不同类型的对象和概念。在不包括具有不同用途的事务日志文件的情况下,测量数据库作为一个整体或单个表或索引视图消耗的空间的用例通常更有用。 事务日志是自上次备份日志文件以来事务的运行日志(因此得名),以协助数据库的恢复以确保ACID原则得到保证。随着越来越多的事务写入日志文件,它的大小(内部)通常会波动,直到发生事务日志备份。它没有特定的索引概念,也没有针对当前时间点的整体数据,而是数据如何成为数据库中当前状态的历史。 sp_spaceused有助于在数据库级别为您提供有关reserved磁盘总空间的信息,数据库中使用了多少空间与总空间有data多大,以及数据和索引将使用index_size的剩余空间unused随着他们的成长。此外,在表或索引视图级别,它甚至会告诉您除了前面提到的数据点之外的表中的行数(有效地使用元数据)。 要了解数据库的总体增长趋势,可以定期查看或记录结果,sp_spaceused因为数据大小(和索引大小)的变化将指示该指标,而不是任何给定时间的事务日志大小,本身。
您必须提供您所指的脚本,以便我们能够就其准确性向您提供建议,但如果它们是基于DMV
sys.database_files
的,那么您很有可能正在寻找适合他们目的的东西'的目的。sp_spaceused
专门设计用于告诉您数据库内数据的大小,无论是整个数据库本身还是单个表或索引视图:事务日志存储在不同的文件中,与数据库及其文件相比,它是一种不同类型的对象和概念。在不包括具有不同用途的事务日志文件的情况下,测量数据库作为一个整体或单个表或索引视图消耗的空间的用例通常更有用。
事务日志是自上次备份日志文件以来事务的运行日志(因此得名),以协助数据库的恢复以确保ACID原则得到保证。随着越来越多的事务写入日志文件,它的大小(内部)通常会波动,直到发生事务日志备份。它没有特定的索引概念,也没有针对当前时间点的整体数据,而是数据如何成为数据库中当前状态的历史。
sp_spaceused
有助于在数据库级别为您提供有关reserved
磁盘总空间的信息,数据库中使用了多少空间与总空间有data
多大,以及数据和索引将使用index_size
的剩余空间unused
随着他们的成长。此外,在表或索引视图级别,它甚至会告诉您除了前面提到的数据点之外的表中的行数(有效地使用元数据)。要了解数据库的总体增长趋势,可以定期查看或记录结果,
sp_spaceused
因为数据大小(和索引大小)的变化将指示该指标,而不是任何给定时间的事务日志大小,本身。