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)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库