sp_dba_spacealert_dmo.vbs

,

This vbscript is used to alert and email receipients on Filegroup space usage
Ouput:  '% Space Avail. , Space Avail. Filesize, MaxSize, FileName, DBname, FileGroup
The process takes three arguments - SqlserverName ,
Threshold for percentage of available space to check ,
Mininum MaxFileSize to check
Execute the script either from the command line or schedule the script via Sql Server Agent
Command line execution:  cscript.exe sp_dba_spacealert_dmo.vbs sqlservername Threshold MaxfileSize
Sql server agent : cscript sp_dba_spacealert_dmo.vbs  sqlservername Threshold MaxfileSize
The process uses sqlmail which can be installed on any server within your organization

'############################### sp_dba_spacealert_dmo.vbs ############################
' Submitted by Jim Mccoy  Divermack@yahoo.com
'This vbscript is used to alert and email receipients on Filegroup space usage
'Ouput:  '% Space Avail. , Space Avail. Filesize, MaxSize, FileName, DBname, FileGroup
'The process takes three arguments - SqlserverName , 
'Threshold for percentage of available space to check ,
'Mininum MaxFileSize to check
'Execute the script either from the command line or schedule the script via Sql Server Agent
'Command line execution:  cscript.exe sp_dba_spacealert_dmo.vbs sqlservername Threshold MaxfileSize
'Sql server agent : cscript sp_dba_spacealert_dmo.vbs  sqlservername Threshold MaxfileSize
'The process uses sqlmail which can be installed on any server within your organization
'######################################################################################
Dim oServer,oDatabase
Dim oDBgrp,oDBfgrp
Dim sResults,oDBfile 
Dim oDbfil,sDBfil
Dim SpAlert,Checksize

Dim sFgn,sDBfs

Dim oArgs, fso, drv
Dim command, recordset, connDb 
Nosend = False

				'Constants used for the sendmail proc
Const sServer = "SSSSSSS"                  ' Name of server where Sqlmail is installed
Const sUser = "UUUUU"                      ' Sqlmail userid
Const sPassword = "PPPPPP"                 ' Sqlmail password 
Const sDatabase = "master"
Const messageto = "NNNNNN@company.com"     ' Mail recipient 
Const ccto = "NNNNNN@comapny.com"          ' cc Mail recipient 
			' multiple addresses delimited by semicolon
Const width = "200"

 'Arguments for Sqlserver ,  Threshold  , MaxFileSizeCheck
 
 Sqlserver = WScript.Arguments.Item(0)
 Threshold = CInt(WScript.Arguments.Item(1))
 MaxCheck = CInt(WScript.Arguments.Item(2))
 
Set oServer = CreateObject("SQLDmo.SqlServer") 
 
oServer.LoginSecure = True 
 
oServer.Connect Sqlserver 
 
' This will return the name of each database along with the % space avail.
' space avail,  Filesize, MaxFileSize, FileName, DBName and FileGroup 

For Each oDatabase In oServer.Databases 
  Set oDBgrp = oDatabase
  Set oDBfgrp = oDBgrp.Filegroups
	for each sDBfs in oDBfgrp
	   Next
	    for each oDBfil in oDBfgrp
	     sFgn = oDBfil.name
	        for each sDBfil in oDBfil.DBFiles 
		SpAlert = Round((sDBfil.SpaceAvailableInMB/sDBfil.Size)* 100)
		Checksize = Round(sDBfil.MaximumSize - sDBfil.Size)             ' Check to see if the filesize is approaching  maxfilesize
		'  If you want to exclude primary filegroups
		'If SpAlert < Threshold and  sDBfil.MaximumSize > -1 and sFgn <> "PRIMARY" and Checksize < MaxCheck then
		
		'  If you want to include primary filegroups
		If SpAlert < Threshold and  sDBfil.MaximumSize > -1  and Checksize < MaxCheck then
		
		'Displays % space avail. , Space avail. Filesize, MaxSize, FileName, DBname, FileGroup
		sTitle = "%SpAvl - SpAvl(mb) - Fsize - Msize - Fname - DB - FGN And MaxFsize < " & MaxCheck & "MB"
		sResults = sResults & sTitle & Chr(13) & "    " & SpAlert & "%" &" - "& sDBfil.SpaceAvailableInMB & "MB" &" - "& sDBfil.Size & "MB" & " - " & sDBfil.MaximumSize & "MB" & " - " & sDBfil.Name & " - " & oDatabase.name & " - " & sFgn  &  Chr(13) 
		  If IsEmpty(sResults) = False  then 
		     Nosend = True
			 End If
		End If
	    Next
	Next
Next 



sConnect = "driver={SQL Server};server=SSSSSSS" + ";uid=" + _
		sUser + ";pwd=" + sPassword + ";database=" + sDatabase
messagebody = sResults 

messagesubject = "Space Alert For: " & Sqlserver & " " & Now
	
Set command = WScript.CreateObject("ADODB.Command")
command.Activeconnection = sConnect



If Nosend = True Then		' Don't send email if there's nothing to report on
command.CommandText = _
"EXEC master.dbo.xp_sendmail @recipients = '" + messageto + _
	"',@copy_recipients = '" + ccto + _
	"',@subject = '" + messagesubject + _
	"',@message = '" + messagebody + _
	"', @width = " + width
	Set recordset = command.Execute()
End If	

   
'Uncomment to display results in MsgBox  at terminal

'MsgBox  sResults 

  
oServer.DisConnect 
' Clean up
Set oServer = Nothing 
Set recordset = nothing
Set connDb  = nothing
Set command = nothing
Set recordset = nothing

Rate

Share

Share

Rate