getSQLinfo.vbs 获得SQL数据/日志空间使用情况的脚本

获得SQL数据/日志空间使用,已使用的和未使用的空间的脚本

getSQLinfo.vbs
'script to get   SQL DATA/LOG Space Used, Space unused, 
and Space Free 
'Author: Felipe Ferreira, Daniel Magrini
'Date: 05/07/07
'Version 2,0

'@@TO CHANGE::: SERVERNAME\Instance, domain\user, password AND DATABSE!

'____________________________________________________________________________
Const ForReading = 1, ForWriting = 2, ForAppending = 8 
Set oFSO = CreateObject("Scripting.FilesyStemObject") 
outputfile = "CheckSqlDB_Size.txt" 
Set ofile = oFso.OpenTextFile(outputfile,8, True)
oFile.Writeline "######################################################"
oFile.Writeline "This command executed in " & Date & " at " & Time & VbCrLf
'____________________________________________________________________________

CheckSQLData
CheckSQLLOG

'############## GET SQL DATA SPACE USED, SPACE TOTAL, SPACE FREE
'Function checkSQL(strServer,strDB)   in the future make it a function....
Sub CheckSQLDATA
Const adOpenDynamic = 1, adLockOptimistic = 3
Dim strQuery
Dim objConnection, objRecordSet 
Dim strQueryResult, strQueryResult2
Dim UsedDataSpace, TotalDataSpace, FreeDataSpace
Set objConnection = CreateObject("ADODB.Connection")
Set objRecordSet = CreateObject("ADODB.Recordset")

objConnection.Open _
   "Provider=SQLOLEDB.1;Server=192.168.8.10;User ID=sa;Password=lcx;Database=master;"

strQuery = "DBCC showfilestats"
   objRecordSet.Open strQuery, objConnection, adOpenDynamic, adLockOptimistic
   if objRecordSet.eof Then
       'nothing returned
    wscript.echo "ERROR!!!"
   Else

'NOTE : To get the value in MB   64 / 1024 = 0.0625
   Do Until objRecordSet.eof 
      strQueryResult = objRecordSet.Fields("UsedExtents")
    UsedDataSpace = strQueryResult * 0.0625
    strQueryResult2 = objRecordSet.Fields("TotalExtents")
    TotalDataSpace = strQueryResult2 * 0.0625
    FreeDataSpace = TotalDataSpace - UsedDataSpace

'Clean Data
    UsedDataSpace = Left(UsedDataSpace,4)
    FreeDataSpace = Left(FreeDataSpace,4)
    TotalDataSpace = Left(TotalDataSpace,4)

'Print Result on Screen
    Wscript.echo "Used Space(MB) = " & UsedDataSpace 
    Wscript.Echo "Free Space(MB) = " & FreeDataSpace
    Wscript.Echo "Total Space(MB) = " & TotalDataSpace

'Write on File
    ofile.WriteLine "Used DATA Space(MB) = " & UsedDataSpace
    ofile.WriteLine "Free DATA Space(MB) = " & FreeDataSpace
    ofile.WriteLine "Total DATA Space(MB) = " & TotalDataSpace

objRecordSet.MoveNext
   loop
   end if
objRecordSet.Close
objConnection.Close 
set objConnection = nothing
set objRecordSet = nothing
end sub

Sub CheckSQLLOG
Const adOpenDynamic = 1, adLockOptimistic = 3
Dim strQuery
Dim objConnection, objRecordSet 
Dim strQueryResult, strQueryResult2
Dim UsedLogSpace, TotalLogSpace, FreeLogSpace
Set objConnection = CreateObject("ADODB.Connection")
Set objRecordSet = CreateObject("ADODB.Recordset")

objConnection.Open _
   "Provider=SQLOLEDB.1;Server=192.168.8.10;User ID=sa;Password=lcx;Database=master;"

strQuery = "DBCC SQLPERF(LOGSPACE)"
   objRecordSet.Open strQuery, objConnection, adOpenDynamic, adLockOptimistic
   if objRecordSet.eof Then
       'nothing returned
    wscript.echo "ERROR!!!"
   Else

Do Until objRecordSet.eof 
    If objRecordSet.Fields("Database Name") = "master" Then

strQueryResult = objRecordSet.Fields("Log Size (MB)")
     strQueryResult2 = objRecordSet.Fields("Log Space USed (%)")
     UsedLogSpace = (strQueryResult * strQueryResult2) / 100
     TotalLogSpace = strQueryResult
     FreeLogSpace = TotalLogSpace - UsedLogSpace

'Clean Data
     UsedLogSpace = Left(UsedLogSpace,4)
     FreeLogSpace = Left(FreeLogSpace,4)
     TotalLogSpace = Left(TotalLogSpace,4)

'Print Result on Screen
     Wscript.echo "Used Space(MB) = " & UsedLogSpace 
     Wscript.Echo "Free Space(MB) = " & FreeLogSpace
     Wscript.Echo "Total Space(MB) = " & TotalLogSpace

'Write on File
     oFile.WriteLine "Used LOG Space(MB) = " & UsedLogSpace
     oFile.WriteLine "Free LOG Space(MB) = " & FreeLogSpace
     oFile.WriteLine "Total LOG Space(MB) = " & TotalLogSpace

oFile.close

Exit Do

End If

objRecordSet.MoveNext
   loop
   end if
objRecordSet.Close
objConnection.Close 
set objConnection = nothing
set objRecordSet = nothing
end sub
WSCript.Quit

(0)

相关推荐

  • getSQLinfo.vbs 获得SQL数据/日志空间使用情况的脚本

    获得SQL数据/日志空间使用,已使用的和未使用的空间的脚本 getSQLinfo.vbs 'script to get   SQL DATA/LOG Space Used, Space unused,  and Space Free  'Author: Felipe Ferreira, Daniel Magrini 'Date: 05/07/07 'Version 2,0 '@@TO CHANGE::: SERVERNAME\Instance, domain\user, password AND

  • MSSQL 监控数据/日志文件增长实现方法

    前几天,在所有数据库服务器部署了监控磁盘空间的存储过程和作业后(MS SQL 监控磁盘空间告警),今天突然收到了两封告警邮件,好吧,存储规划是一方面,但是,是不是要分析一下是什么原因造成磁盘空间不足的呢?会不会是因为突然暴增的日志文件,抑或是系统业务猛增导致数据量暴增,还是历史数据累计原因....分析总得有数据来支撑吧,但是现在只有那些数据文件的当前大小信息,没有数据文件的历史增长变化信息,所以,今天就想实现这么一个功能,每天(频率可以调整)去收集一下数据文件的信息,放到一个表里面,这样方便我们

  • SQLServer数据库中开启CDC导致事务日志空间被占满的原因

    SQLServer中开启CDC之后,在某些情况下会导致事务日志空间被占满的现象为: 在执行增删改语句(产生事务日志)的过程中提示,The transaction log for database '***' is full due to 'REPLICATION'(数据库"***"的事务日志已满,原因为"REPLICATION"). CDC以及复制的基本原理粗略地讲,对于日志的使用步骤如下: 1,每当基础表(开启了CDC或者replication的表)产生事务性操作

  • SQL数据库日志已满解决方法

    当前的解决方法是:把硬盘上的其他文件删除,以空出硬盘空间,将数据库的日志文件大小改成无限制,然后分离数据库,要确保分离成功,.然后把数据库日志文件删除(最好是先改名,以防万一).再附加数据库,这样会重建日志文件. 加回去之后,将数据库改成自动收缩,把日志文件改成按mb增长,增长最大设为一个固定的值,值的大小看数据处理情况,存在大指的update操作的话,应设为大一点. 在查询分析器上操作: 清空日志 DUMP TRANSACTION 库名 WITH NO_LOG 截断事务日志: BACKUP L

  • DBCC SHRINKDATABASEMS SQL数据库日志压缩方法

    MS SQL数据库日志压缩方法 MS SQL性能是很不错的,但是数据库用了一段时间之后,数据库却变得很大,实际的数据量不大.一般都是数据库日志引起的!数据库日志的增长可以达到好几百M. 网上的MSSQL虚拟主机价格也贵,要想不让数据库超容,只好压缩下数据库日志,或者删除数据库日志. 下面我给大家介绍一个方法 1.打开企业管理器 2.打开要处理的数据库 3.点击菜单>工具>SQL查询分析器 4.在输入窗口里面输入: DUMP TRANSACTION [数据库名] WITH NO_LOG BACK

  • SQL Server获取磁盘空间使用情况

    对于DBA来说,监控磁盘使用情况是必要的工作,然后没有比较简单的方法能获取到磁盘空间使用率信息,下面总结下这些年攒下的脚本: 最常用的查看磁盘剩余空间,这个属于DBA入门必记的东西: -- 查看磁盘可用空间 EXEC master.dbo.xp_fixeddrives xp_fixeddrives方式有点是系统自带,可直接使用,缺点是不能查看磁盘总大小和不能查看SQL Server未使用到的磁盘信息 使用sys.dm_os_volume_stats函数 --===================

  • SQL Server日志过大会影响查询结果

    前几天发现网站的查询有点不正常,一般来说,会先查询出一级目录的内容,单击一级目录后会查询出二级目录--一直到查询到最下面的文件.可是这几天发现,查询速度很慢,而且,查询出来的也不是一级目录,而是直接显示最下面的文件,显示的数据量也有问题. 一开始还以为是网站被人黑了,因为网站没有修改过,所以应该不是网站自身的问题. 在服务器上查了半天,什么也没有查出来. 后来去看网站程序,看了半天,也没有看出什么问题来. 再后来去看数据库,看了半天,同样没有看出什么问题来. 最后无意中看到数据库的日志文件很大,

  • SQL Server表空间碎片化回收的实现

    目录 1 锁片化的产生 1.1 产生碎片化的原因 1.2 碎片化的影响 1.3 定位碎片化 2 碎片化处理 2.1 删除并重建聚集索引 2.2 DROP_EXISTING 2.3 DBCC DBREINDEX 2.4 DBCC INDEXDEFRAG 3 空间回收 参考链接: 1 锁片化的产生 1.1 产生碎片化的原因 1.在B-tree索引中,表数据按照聚集索引的排序进行物理存储,若聚集索引离散化比较严重,那么可能会出现较为严重的碎片化问题: 2.随着业务的DML操作,会伴随着数据页分裂的情况

  • CI框架AR操作(数组形式)实现插入多条sql数据的方法

    本文实例讲述了CI框架AR操作实现插入多条sql数据的方法.分享给大家供大家参考,具体如下: 如果你不使用AR的话,你可以这样做: INSERT INTO TABLE (FIELDS) VALUES ('1','2'),('3','4'); $this->db->query($sql); 个人还是喜欢CI的AR操作,老版本(2.0一下)应该没有插入多条数据的操作,新版本可以用: $this->db->insert_batch(); 如下案例: $data = array( arra

  • C#将Sql数据保存到Excel文件中的方法

    本文实例讲述了C#将Sql数据保存到Excel文件中的方法,非常有实用价值.分享给大家供大家参考借鉴之用. 具体功能代码如下: public string ExportExcel( DataSet ds,string saveFileName) { try { if (ds == null) return "数据库为空"; bool fileSaved = false; Microsoft.Office.Interop.Excel.Application xlApp = new Mic

随机推荐