'Start of Main
'-----------------------------------------------------------------------------------------------
call Main()
Sub Main()
Dim objParameters, sConnectionString
Dim oAPI, oBag
Dim oAPITemp
Set oAPITemp = MOMCreateObject("MOM.ScriptAPI")
oAPITemp.LogScriptEvent "dbDumps2000.vbs", 4000, 4, " script has been executed. "
Set objParameters = WScript.Arguments
If objParameters.Count <> 1 Then
Quit()
End If
sConnectionString= objParameters(0)
Set objParameters = Nothing
Set oAPI = MOMCreateObject("MOM.ScriptAPI")
Set oBag = oAPI.CreatePropertyBag()
If GetDumpInfo(oBag, sConnectionString) = 0 Then
Call oAPI.Return(oBag)
Else
Quit()
End If
End Sub
'End of Main
'-----------------------------------------------------------------------------------------------
Function MomCreateObject(ByVal sProgramId)
Dim oError
Set oError = New Error
On Error Resume Next
Set MomCreateObject = CreateObject(sProgramId)
oError.Save
On Error Goto 0
If oError.Number <> 0 Then WScript.Quit
End Function
Function Quit()
WScript.Quit()
End Function
Class Error
Private m_lNumber
Private m_sSource
Private m_sDescription
Private m_sHelpContext
Private m_sHelpFile
Public Sub Save()
m_lNumber = Err.number
m_sSource = Err.Source
m_sDescription = Err.Description
m_sHelpContext = Err.HelpContext
m_sHelpFile = Err.helpfile
End Sub
Public Sub Raise()
Err.Raise m_lNumber, m_sSource, m_sDescription, m_sHelpFile, m_sHelpContext
End Sub
Public Sub Clear()
m_lNumber = 0
m_sSource = ""
m_sDescription = ""
m_sHelpContext = ""
m_sHelpFile = ""
End Sub
Public Default Property Get Number()
Number = m_lNumber
End Property
Public Property Get Source()
Source = m_sSource
End Property
Public Property Get Description()
Description = m_sDescription
End Property
Public Property Get HelpContext()
HelpContext = m_sHelpContext
End Property
Public Property Get HelpFile()
HelpFile = m_sHelpFile
End Property
End Class
Function GetDumpInfo (ByRef oBag, ByVal sConnectionString)
Dim SCRIPT_SQL
Dim cnADOConnection
Dim strProv
Dim rsSQLdumps
Dim bFail
Dim DBname
Dim daysSinceFull
Dim daysSinceDiff
SCRIPT_SQL = "SET NOCOUNT ON" &; VbCrLf &;_
"SELECT" &; VbCrLf &;_
"d.name as [DBname]" &; VbCrLf &;_
", [daysSinceFull] = max(isnull(datediff(dd,b.backup_start_date,getdate()),0)) " &; VbCrLf &;_
", [daysSinceDiff] = max(isnull(datediff(dd,bi.backup_start_date,getdate()),0))" &; VbCrLf &;_
" " &; VbCrLf &;_
"FROM [master]..[sysdatabases] d with (nolock)" &; VbCrLf &;_
"LEFT JOIN [msdb]..[backupset] b with (nolock) on d.name = b.database_name" &; VbCrLf &;_
"and b.backup_start_date = (select max(backup_start_date)" &; VbCrLf &;_
"from [msdb]..[backupset] b2" &; VbCrLf &;_
"where b.database_name = b2.database_name and b2.type = 'D')" &; VbCrLf &;_
"LEFT JOIN [msdb]..[backupset] bi with (nolock) on d.name = bi.database_name" &; VbCrLf &;_
"and bi.backup_start_date = (select max(backup_start_date)" &; VbCrLf &;_
"from [msdb]..[backupset] b3" &; VbCrLf &;_
"where bi.database_name = b3.database_name and b3.type = 'I')" &; VbCrLf &;_
"where d.name not in ('Pubs','tempdb','Northwind', 'Adventureworks') and d.status < 30" &; VbCrLf &;_
"group by d.name "
'on error resume next
Set cnADOConnection = MomCreateObject("ADODB.Connection")
cnADOConnection.Provider = "sqloledb"
cnADOConnection.ConnectionTimeout = 30
strProv = "Server=" &; sConnectionString &; ";Database=msdb;Trusted_Connection=yes"
Err.Clear
cnADOConnection.Open strProv
if 0 <> Errr.number then
' Throw
Exit Function
end if
Err.Clear
Set rsSQLdumps = cnADOConnection.Execute(SCRIPT_SQL)
If 0 <> Err.number Then
' Throw
Exit Function
End If
If 0 = rsSQLdumps.State Then
' No records returned, recordset is likely closed.
Exit Function
End If
Do
bFail = True
Err.Clear
if rsSQLdumps.EOF then
if 0 <> Err.number then Exit Do
bFail = False
Exit Do
End If
If 0 <> Err.number Then Exit Do
DBname = rsSQLdumps("DBname").Value
daysSinceFull = rsSQLdumps("daysSinceFull").Value
daysSinceDiff = rsSQLdumps("daysSinceDiff").Value
Call oBag.AddValue(DBname &; "-daysSinceFull", CInt(daysSinceFull))
Call oBag.AddValue(DBname &; "-daysSinceDiff", CInt(daysSinceDiff))
Err.Clear
rsSQLdumps.MoveNext
If 0 <> Err.number then Exit Do
Loop
If bFail Then
' Throw
End if
Set cnADOConnection = Nothing
Set rsSQLdumps = Nothing
GetDumpInfo = 0
End Function