SQL脚本监控数据库状态:大小、空间使用与恢复模式

5星 · 超过95%的资源 需积分: 50 4 下载量 171 浏览量 更新于2024-09-10 收藏 5KB TXT 举报
本资源是一段SQL脚本,用于查询SQL Server数据库的状态信息,主要包括数据文件大小、日志文件大小以及未分配空间。脚本分为三个部分:数据文件大小、日志文件大小和数据库总体状态。 1. 数据文件大小: - 通过`#dbsize`临时表收集每个数据库的数据:包括数据库名(Dbname)、数据库状态(dbstatus)、恢复模型(默认为'NA'),以及文件大小(file_Size_MB)、已使用空间(Space_Used_MB)和剩余空间(Free_Space_MB)。`sp_msforeachdb`是一个系统存储过程,它会遍历所有数据库并执行SQL查询,获取每个数据库的这些信息,其中文件大小是按MB计算的。 2. 日志文件大小: - 类似地,通过`#logsize`临时表收集每个数据库的日志文件大小,包括日志文件总大小(Log_File_Size_MB)、已使用空间(log_Space_Used_MB)和剩余空间(log_Free_Space_MB)。 3. 数据库总体状态: - 查询所有数据库的未分配空间,这部分是通过计算数据文件大小加上日志文件大小减去已预留空间来得到的,结果存储在`#dbfreesize`表中。 - `#alldbstate`临时表用于存储数据库的状态信息,包括数据库名、状态和恢复模型。只有当数据库状态不是'online'时,才会将其信息插入到其他临时表中,如`#dbsize`、`#logsize`和`#dbfreesize`。 最后,整个脚本执行完后,将返回一个汇总的结果集,列出了每个数据库的名称、状态、恢复模型、总数据库大小、文件大小、已使用空间、剩余空间、日志文件大小、日志已使用空间和未分配空间,按照数据库名称排序。 这个脚本对于监控和管理SQL Server环境中的数据库健康状况非常有用,可以帮助管理员快速了解数据库的空间使用情况,以便于优化存储资源和识别潜在的问题。