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)

posted @   谢堂文(Darren Xie)  阅读(4673)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
阅读排行:
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
点击右上角即可分享
微信分享提示