本文为这个系列最后一篇。将是如何使用DBCC命令来监控sqlServer日志空间的使用情况。
前言:
每个数据库都必须有事务日志。事务日志记录每个DML操作,并应用于sqlServer的数据库中,如果恢复模式为FULL并经常有DML操作,日志将增长得非常快。几时恢复模式为simple,当数据库处于事务复制或者合并复制时,日志通常会增长。如果日志不是经常备份且日志文件的增长没有受到限制的话,将有可能耗光你所有的硬盘空间然后造成数据库宕机。作为DBA,应该经常监控日志的使用情况以避免问题的发生。
作为DBA,其中一个重要的责任就是监控日志文件的大小,以确保空间不会被耗光导致数据库服务器宕机。
sqlServer提供了不同的DBCC命令供DBA使用,其中DBCC sqlPERF是其中一个用于监控日志大小的常用命令,在本文中,将演示使用这个命令。除了获取日志的信息,还可以用于重置等待和闩锁状态。
DBCC sqlPERF用于监控日志使用情况时,只需要传入一个参数LOGSPACE。但是它也接受其他命令。
DBCC sqlPERF(‘logspace’)命令返回三个列:DatabaseName、LogSize(MB)、LogSpaceUsed(%)
步骤:
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来实现。根据返回的结果可以预测是否有必要马上执行日志备份操作(完整备份不截断日志,也就不会释放日志空间)。
扩展信息:
可以改进这个语句来获取汇总值,在一段时间之后,表就存放了日志使用信息的历史记录。可以用于分析日志的增长情况。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。