关闭

使用系统函数、存储过程和DBCC SQLPERF命令来监控SQL Server(3)

发表于:2013-3-06 09:15

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:黄钊吉    来源:51Testing软件测试网采编

  本文为这个系列最后一篇。将是如何使用DBCC命令来监控SQLServer日志空间的使用情况。

  前言:

  每个数据库都必须有事务日志。事务日志记录每个DML操作,并应用于SQLServer的数据库中,如果恢复模式为FULL并经常有DML操作,日志将增长得非常快。几时恢复模式为simple,当数据库处于事务复制或者合并复制时,日志通常会增长。如果日志不是经常备份且日志文件的增长没有受到限制的话,将有可能耗光你所有的硬盘空间然后造成数据库宕机。作为DBA,应该经常监控日志的使用情况以避免问题的发生。

  作为DBA,其中一个重要的责任就是监控日志文件的大小,以确保空间不会被耗光导致数据库服务器宕机。

  SQLServer提供了不同的DBCC命令供DBA使用,其中DBCC SQLPERF是其中一个用于监控日志大小的常用命令,在本文中,将演示使用这个命令。除了获取日志的信息,还可以用于重置等待和闩锁状态。

  DBCC SQLPERF用于监控日志使用情况时,只需要传入一个参数LOGSPACE。但是它也接受其他命令。

  DBCC SQLPERF(‘logspace’)命令返回三个列:DatabaseName、LogSize(MB)、LogSpaceUsed(%)

  步骤:

  1、打开SSMS然后新开一个查询窗口。

  2、在查询窗口中输入以下代码:

USE tempdb
GO
IF OBJECT_ID('dbo.#tbl_DBLogSpaceUsage') IS NOT NULL
    BEGIN
        DROP TABLE dbo.#tbl_DBLogSpaceUsage
    END

CREATE TABLE dbo.#tbl_DBLogSpaceUsage
    (
      DatabaseName NVARCHAR(128) ,
      LogSize NVARCHAR(25) ,
      LogSpaceUsed NVARCHAR(25) ,
      [Status] TINYINT
    )

INSERT  INTO dbo.#tbl_DBLogSpaceUsage
        EXEC ( 'DBCC SQLPERF(LOGSPACE)'
            )

--查询全部结果:
SELECT  DatabaseName ,
        LogSize ,
        LogSpaceUsed ,
        [Status]
FROM    dbo.#tbl_DBLogSpaceUsage
GO
--查询特定数据库的结果:
SELECT  DatabaseName ,
        LogSize AS LogSizeInMB ,
        LogSpaceUsed LogspaceUsed_In_Percent ,
        [Status]
FROM    dbo.#tbl_DBLogSpaceUsage
WHERE   Databasename = 'AdventureWorks'
GO

  分析:

  本例中创建了一个临时表,然后调用DBCC SQLPERF来把数据插入表中。由于DBCC命令需要用EXEC来执行,所以使用动态SQL来实现。根据返回的结果可以预测是否有必要马上执行日志备份操作(完整备份不截断日志,也就不会释放日志空间)。

  扩展信息:

  可以改进这个语句来获取汇总值,在一段时间之后,表就存放了日志使用信息的历史记录。可以用于分析日志的增长情况。

相关链接:

使用系统函数、存储过程和DBCC SQLPERF命令来监控SQL Server(1)

使用系统函数、存储过程和DBCC SQLPERF命令来监控SQL Server(2)

《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号