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

时间:2022-06-01 20:12:31

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

getSQLinfo.vbs

  1. 'script to get   SQL DATA/LOG Space Used, Space unused,   
  2. and Space Free   
  3. 'Author: Felipe Ferreira, Daniel Magrini  
  4. 'Date: 05/07/07  
  5. 'Version 2,0  
  6.  
  7. '@@TO CHANGE::: SERVERNAME\Instance, domain\user, password AND DATABSE!  
  8.  
  9. '____________________________________________________________________________  
  10. Const ForReading = 1, ForWriting = 2, ForAppending = 8   
  11. Set oFSO = CreateObject("Scripting.FilesyStemObject")   
  12. outputfile = "CheckSqlDB_Size.txt"   
  13. Set ofile = oFso.OpenTextFile(outputfile,8, True)  
  14. oFile.Writeline "######################################################"  
  15. oFile.Writeline "This command executed in " & Date & " at " & Time & VbCrLf  
  16. '____________________________________________________________________________  
  17.  
  18. CheckSQLData  
  19. CheckSQLLOG  
  20.  
  21.  
  22. '############## GET SQL DATA SPACE USED, SPACE TOTAL, SPACE FREE  
  23. 'Function checkSQL(strServer,strDB)   in the future make it a function....  
  24. Sub CheckSQLDATA  
  25. Const adOpenDynamic = 1, adLockOptimistic = 3  
  26. Dim strQuery  
  27. Dim objConnection, objRecordSet   
  28. Dim strQueryResult, strQueryResult2  
  29. Dim UsedDataSpace, TotalDataSpace, FreeDataSpace  
  30. Set objConnection = CreateObject("ADODB.Connection")  
  31. Set objRecordSet = CreateObject("ADODB.Recordset")  
  32.  
  33. objConnection.Open _  
  34.    "Provider=SQLOLEDB.1;Server=192.168.8.10;User ID=sa;Password=lcx;Database=master;"  
  35.  
  36. strQuery = "DBCC showfilestats"  
  37.    objRecordSet.Open strQuery, objConnection, adOpenDynamic, adLockOptimistic  
  38.    if objRecordSet.eof Then  
  39.        'nothing returned  
  40.     wscript.echo "ERROR!!!"  
  41.    Else   
  42.  
  43. 'NOTE : To get the value in MB   64 / 1024 = 0.0625  
  44.    Do Until objRecordSet.eof   
  45.       strQueryResult = objRecordSet.Fields("UsedExtents")  
  46.     UsedDataSpace = strQueryResult * 0.0625  
  47.     strQueryResult2 = objRecordSet.Fields("TotalExtents")  
  48.     TotalDataSpace = strQueryResult2 * 0.0625  
  49.     FreeDataSpace = TotalDataSpace - UsedDataSpace  
  50.  
  51.     'Clean Data  
  52.     UsedDataSpace = Left(UsedDataSpace,4)  
  53.     FreeDataSpace = Left(FreeDataSpace,4)  
  54.     TotalDataSpace = Left(TotalDataSpace,4)  
  55.  
  56.     'Print Result on Screen  
  57.     Wscript.echo "Used Space(MB) = " & UsedDataSpace   
  58.     Wscript.Echo "Free Space(MB) = " & FreeDataSpace  
  59.     Wscript.Echo "Total Space(MB) = " & TotalDataSpace  
  60.  
  61.     'Write on File  
  62.     ofile.WriteLine "Used DATA Space(MB) = " & UsedDataSpace  
  63.     ofile.WriteLine "Free DATA Space(MB) = " & FreeDataSpace  
  64.     ofile.WriteLine "Total DATA Space(MB) = " & TotalDataSpace  
  65.  
  66.       objRecordSet.MoveNext  
  67.    loop  
  68.    end if  
  69. objRecordSet.Close  
  70. objConnection.Close   
  71. set objConnection = nothing  
  72. set objRecordSet = nothing  
  73. end sub  
  74.  
  75. Sub CheckSQLLOG  
  76. Const adOpenDynamic = 1, adLockOptimistic = 3  
  77. Dim strQuery  
  78. Dim objConnection, objRecordSet   
  79. Dim strQueryResult, strQueryResult2  
  80. Dim UsedLogSpace, TotalLogSpace, FreeLogSpace  
  81. Set objConnection = CreateObject("ADODB.Connection")  
  82. Set objRecordSet = CreateObject("ADODB.Recordset")  
  83.  
  84. objConnection.Open _  
  85.    "Provider=SQLOLEDB.1;Server=192.168.8.10;User ID=sa;Password=lcx;Database=master;"  
  86.  
  87. strQuery = "DBCC SQLPERF(LOGSPACE)"  
  88.    objRecordSet.Open strQuery, objConnection, adOpenDynamic, adLockOptimistic  
  89.    if objRecordSet.eof Then  
  90.        'nothing returned  
  91.     wscript.echo "ERROR!!!"  
  92.    Else   
  93.  
  94.  
  95.    Do Until objRecordSet.eof   
  96.     If objRecordSet.Fields("Database Name") = "master" Then  
  97.  
  98.      
  99.      strQueryResult = objRecordSet.Fields("Log Size (MB)")  
  100.      strQueryResult2 = objRecordSet.Fields("Log Space USed (%)")  
  101.      UsedLogSpace = (strQueryResult * strQueryResult2) / 100  
  102.      TotalLogSpace = strQueryResult  
  103.      FreeLogSpace = TotalLogSpace - UsedLogSpace  
  104.  
  105.      'Clean Data  
  106.      UsedLogSpace = Left(UsedLogSpace,4)  
  107.      FreeLogSpace = Left(FreeLogSpace,4)  
  108.      TotalLogSpace = Left(TotalLogSpace,4)  
  109.  
  110.      'Print Result on Screen  
  111.      Wscript.echo "Used Space(MB) = " & UsedLogSpace   
  112.      Wscript.Echo "Free Space(MB) = " & FreeLogSpace  
  113.      Wscript.Echo "Total Space(MB) = " & TotalLogSpace  
  114.  
  115.      'Write on File  
  116.      oFile.WriteLine "Used LOG Space(MB) = " & UsedLogSpace  
  117.      oFile.WriteLine "Free LOG Space(MB) = " & FreeLogSpace  
  118.      oFile.WriteLine "Total LOG Space(MB) = " & TotalLogSpace  
  119.  
  120.      oFile.close  
  121.  
  122.      Exit Do  
  123.  
  124.     End If  
  125.  
  126.       objRecordSet.MoveNext  
  127.    loop  
  128.    end if  
  129. objRecordSet.Close  
  130. objConnection.Close   
  131. set objConnection = nothing  
  132. set objRecordSet = nothing  
  133. end sub  
  134. WSCript.Quit