SQL Server:查看SQL日志文件大小SQL脚本

最近一周,连续出现了两次系统DOWN的事情,都是因为我们公司没有专门的DBA,一天是半夜被电话吵醒,好家伙,数据库的日志满了,系统前台任何提交的操作都不成功,除了查询.

半夜赶回公司处理.

另一个是TempDB爆了,也是出现同样的情况,不过这次是在周未,也很惨,JOBS都死了,下周怎么给用户报表啊!!!!!

没有DBA,那我们小的就只有出了问题再处理,被动太被动了.

我们得想办法让系统自动监视数据库文件大小,及日志文件大小。不应该人工一个一个数据库看大小,每天一个一个数据库的去查看文件大小就太费神了,要是能写个SQL脚本,建立一个JOB定时检查,每天自动去查看各个数据库文件及日志文件的大小,然后再通过数据库邮件,Email 到我们手中,岂不快哉!当然,可以把每天的记录存放到数据库中去,这样数据库及日志文件的增长趋势,我们也就一目了然了。也可以在达到一定的百份比后进行压缩或其它处理.

获取数据库日志文件大小的方法。其实很简单

DBCC 命令:dbcc sqlperf(logspace)

我们执行命令可以得到以下结果:

dbcc sqlperf(logspace)
Database Name  Log Size (MB)            Log Space Used (%)       Status
-------------- ------------------------ ------------------------ -----------
master          2.2421875                32.600174                0
tempdb         0.4921875                39.285713                0
model           0.4921875                41.07143                 0
msdb            2.2421875                30.901567                0
pubs             0.7421875                49.934212                0
Northwind      0.9921875                34.940945                0
dbcc sqlperf(logspace) 可以获取实例中每个数据库日志文件大小,及使用情况。

那我们不能每次都这样执行命令来看,应该放到一个表中保存起来.

先创建一个数据表

create table dbo.LogSize
(
   dbname   nvarchar(50) not null
  ,logsize  decimal(8,2) not null
  ,logused  decimal(5,2) not null
  ,status   int          null
)

然后动态执行dbcc sqlperf(logspace)命令:
insert into dbo.LogSize
execute('dbcc sqlperf(logspace) with no_infomsgs')

-----------------------------------------------------

  除了查日志,数据库文件的大小也是相同的道理

查看数据库空间大小:sp_helpdb  or sp_helpdb(dbname)

原文地址:https://www.cnblogs.com/yiyumeng/p/1810635.html