用存储过程检查SQL Server数据库和日志文件大小(二)

日期: 2009-01-18 作者:Richard Ding翻译:曾少宁 来源:TechTarget中国 英文

通常情况下,DBA在检查数据库空间时,都会运行系统存储过程sp_spaceused,或者从SQL Server Management Studio获取磁盘使用报告。将sp_SDS与其它的方法作比较是非常有趣的。图2的图表显示的是它们之间比较的几个画面组合。它包含四个部分。

第1部分是数据级的sp_SDS结果。第2部分显示sp_spaceused的查询结果。第3部分与第1部分相类似,但它是文件级的。第4部分表示SSMS绘制的饼图。

相关的值颜色突出并与各个部分相连接。      图2:图表显示数据库级sp_SDS、文件级sp_SDS、sp_spaceused和磁盘使用饼状图报告之间的比较。   在S……

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

电子邮件地址不会被公开。 必填项已用*标注

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

通常情况下,DBA在检查数据库空间时,都会运行系统存储过程sp_spaceused,或者从SQL Server Management Studio获取磁盘使用报告。将sp_SDS与其它的方法作比较是非常有趣的。图2的图表显示的是它们之间比较的几个画面组合。它包含四个部分。第1部分是数据级的sp_SDS结果。第2部分显示sp_spaceused的查询结果。第3部分与第1部分相类似,但它是文件级的。第4部分表示SSMS绘制的饼图。相关的值颜色突出并与各个部分相连接。

  数据库级sp_SDS、文件级sp_SDS、sp_spaceused和磁盘使用饼状图报告之间的比较

  图2:图表显示数据库级sp_SDS、文件级sp_SDS、sp_spaceused和磁盘使用饼状图报告之间的比较。

  在SQL Server 2000中,Enterprise Manager的Taskpad视图与SQL Server 2005所绘制的有所不同。如图3,我所管理的其中一个数据库,叫做“LANEPMSI”,它包含54个数据文件和1个日志文件。目前,我们先不考虑为什么一个4.5GB的数据库需要这么多的数据文件——这个是厂商的选择。我所要强调的是,这么多的文件数对于DBA而言,计算这些文件大小是很困难的。如果使用sp_SDS来获取数据就像在列表3中的T-SQL代码按F5键(刷新)一样容易。图4反映了执行列表3中的T-SQL语句的结果。


USE master;
EXEC dbo.sp_SDS 'LANEPMSI', 'DATABASE', 1, 'MB';
EXEC dbo.sp_SDS 'LANEPMSI', 'file', 1, 'MB';

  列表3:在SQL Server2000数据库中以数据库级和文件级执行sp_SDS。

  一个SQL Server 2000数据库包含大量的数据文件

  图3:一个SQL Server 2000数据库包含大量的数据文件,这使得显示数据库空间汇总、已使用空间和未使用空间e非常困难。

  Sp_SDS可以让你查看已使用、未使用、数据和日志空间总数。它同时还将数据库分为单独数据和日志文件,并显示了每个文件之间相应值。

  图4:Sp_SDS可以让你查看已使用、未使用、数据和日志空间总数。它同时还将数据库分为单独数据和日志文件,并显示了每个文件之间相应值。

  Sp_SDS兼容SQL Server 2000、2005 和 2008。图5显示了在SQL Server 2008同时运行sp_SDS和系统存储过程e中sp_spaceused的情况。你可以比较图5和图6的数据,它们都显示了一个硬盘使用报告(Disk Usage Report)。

  Sp_SDS兼容SQL Server 2008。在AdventureWorks2008示例数据库中运行sp_SDS和 sp_spaceused的结果比较。

  图5:Sp_SDS兼容SQL Server 2008。在AdventureWorks2008示例数据库中运行sp_SDS和 sp_spaceused的结果比较。

  在SQL Server 2008上AdventureWorks2008示例数据库的一个Disk Usage 报告饼状图

  图6:在SQL Server 2008上AdventureWorks2008示例数据库的一个Disk Usage 报告饼状图。

  Sp_SDS和它的计算方法对于各种DBA任务是非常有用的。你是否曾经被要求为一个管理会议准备一份数据库空间使用报告呢?你可以使用sp_SDS来快速生成一个整洁的表格格式报告。一个DBA的责任就是监控数据库的增长。你可以安排一个日常工作来运行sp_SDS并将结果存储在一个表中。随着时间的推移,你将建立起一个数据仓库,并用它来分析数据库增长趋势。

  创造数据或日志增长的提醒是存储过程sp_SDS的另外一个实际应用。如果大小超过了某个临界值,你可以发出警告或者采取其它的措施,如执行一个事务日志备份工作。有时候DBA并不需要压缩整个数据库。他只需要缩小占用最大存储空间的一个或几个数据文件。在这种情况下,参数@Level = 'FILE'的sp_SDS可以帮助DBA快速地确定那个(些)文件应该压缩。当由于生产环境中磁盘空间不足而需要重建数据库时,SQL Server数据库空间的详细的文件级统计分析对于DBA正确转移数据库文件是非常有用的。

Richard Ding,波士顿东北大学数据库管理员,他从1990年代后期就开始进行SQL Server相关工作。他的兴趣包括数据库管理、T-SQL开发、灾难恢复、问题复现和性能优化等。他为几个杂志撰写关于SQL Server产品的文章,包括《SQL Server Magazine》和《SQL Server Standard》。他是一个SearchSQLServer.com的贡献者,也是各种SQL Server在线论坛的会员。尽管之前获取了医学学位和生物科学博士学位,Richard仍然很热衷于成为一名有创造力的SQL Server专家。你可以通过电子邮件与他联系:rding@rcn.com。

翻译

曾少宁
曾少宁

TechTarget中国特约技术编辑,某高校计算机科学专业教师和网络实验室负责人,曾任职某网络国际厂商,关注数据中心、开发运维、数据库及软件开发技术。有多本关于思科数据中心和虚拟化技术的译著,如《思科绿色数据中心建设与管理》和《基于IP的能源管理》等。

相关推荐