I was asked a question at my IndyPASS presentation and a subsequent followup about using SMO objects with Powershell in order to say….

Get a list of the databases whom have not been backed up in the last 2 days and then import the results into a logging table. So in order to help everyone out here is a working example I whipped up fairly quickly to demonstrate that ability. Enjoy!

Cheers,
AJ

 

Function GetBackupInfo([string] $SQLServer)

{

$sql= New-Object(‘Microsoft.sqlserver.management.smo.server’)$SQLServer

$resultset = $sql.Databases|Select-Object @{Name=‘server’;Expression={$sql.name}},name,lastbackupdate| where {$_.lastbackupdate -lt (get-date).AddDays(-2)}

#Now we create a database object for the logging db to put our results into

$sqlarchive = New-Object(‘Microsoft.sqlserver.management.smo.Database’)(“LPT-AJONES\SQL08”,“TestArchive”)

 

foreach($result in $resultset)

{

$sqlcmd = “INSERT INTO BADBACKUPLOG(name,lastbackupdate) VALUES(‘” + $result.name + “‘,'” + $result.lastbackupdate + “‘);”

$sqlarchive.ExecuteNonQuery($sqlcmd)

}

}