资源描述:
《sqlserver数据库巡检脚本》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、--1.查看数据库版本信息select@@version--2.查看所有数据库名称及大小execsp_helpdb--3.查看数据库所在机器的操作系统参数execmaster..xp_msver--4.查看数据库启动的参数execsp_configure--5.查看数据库启动时间selectconvert(varchar(30),login_time,120)frommaster..sysprocesseswherespid=1--6.查看数据库服务器名select'ServerName:'+ltrim(@@servername)--7.查看数据库实例名select
2、'Instance:'+ltrim(@@servicename)--8.数据库的磁盘空间呢使用信息execsp_spaceused--9.日志文件大小及使用情况dbccsqlperf(logspace)--10.表的磁盘空间使用信息execsp_spaceused'tablename'--11.获取磁盘读写情况select@@total_read[读取磁盘次数],@@total_write[写入磁盘次数],@@total_errors[磁盘写入错误数],getdate()[当前时间]--12.获取I/O工作情况select@@io_busy,@@timeticks[
3、每个时钟周期对应的微秒数],@@io_busy*@@timeticks[I/O操作毫秒数],getdate()[当前时间]--13.查看CPU活动及工作情况select@@cpu_busy,@@timeticks[每个时钟周期对应的微秒数],@@cpu_busy*cast(@@timeticksasfloat)/1000[CPU工作时间(秒)],@@idle*cast(@@timeticksasfloat)/1000[CPU空闲时间(秒)],getdate()[当前时间]--14.检查锁与等待execsp_lock--15.检查死锁execsp_who_lock--
4、自己写个存储过程即可/*createproceduresp_who_lockasbegin declare@spidint,@blint, @intTransactionCountOnEntryint, @intRowcountint, @intCountPropertiesint, @intCounterint createtable#tmp_lock_who(idintidentity(1,1),spidsmallint,blsmallint) IF@@ERROR<>0RETURN@@ERROR insertinto#tmp_lo
5、ck_who(spid,bl)select0,blocked from(select*fromsys.sysprocesseswhereblocked>0)a wherenotexists(select*from(select*fromsys.sysprocesseswhereblocked>0)b wherea.blocked=spid) unionselectspid,blockedfromsys.sysprocesseswhereblocked>0 IF@@ERROR<>0RETURN@@ERROR --找到临时表的记录数
6、 select@intCountProperties=Count(*),@intCounter=1 from#tmp_lock_who IF@@ERROR<>0RETURN@@ERROR if@intCountProperties=0 select'现在没有阻塞和死锁信息'asmessage --循环开始 while@intCounter<=@intCountProperties begin --取第一条记录 select@spid=spid,@bl=bl from#tmp_lock_whowhereid=@in
7、tCounter begin if@spid=0 select'引起数据库死锁的是:'+CAST(@blASVARCHAR(10))+'进程号,其执行的SQL语法如下' else select'进程号SPID:'+CAST(@spidASVARCHAR(10))+'被'+'进程号SPID:'+CAST(@blASVARCHAR(10))+'阻塞,其当前进程执行的SQL语法如下' DBCCINPUTBUFFER(@bl) end --循环指针下移 set@intCounter=@intCounter+1 en