Perfect! Thanks.
Here's the final scripts
$s = "kbullen-865";
$db_name = "tempdb";
$CombinedExceptionMessage = "";
##Add-Type -Path "C:\Program Files (x86)\Microsoft SQL Server\100\SDK\Assemblies\Microsoft.SqlServer.Smo.dll"
[System.Reflection.Assembly]::LoadWithPartialName('Microsoft.SqlServer.SMO') | Out-Null
$serv = New-Object Microsoft.SqlServer.Management.SMO.Server($s)
Function CheckObject
{
Param ($DatabaseName, $ObjectSchema, $ObjectName)
$scon = New-Object System.Data.SqlClient.SqlConnection
#$scon.ConnectionString = "SERVER=" + $s + ";DATABASE=" + $DatabaseName + ";Integrated Security=true"
$scon.ConnectionString = "SERVER=$s;DATABASE=$db_name;Integrated Security=true"
$trycmd = New-Object System.Data.SqlClient.SqlCommand
## We refresh the object with the schema.table
$trycmd.CommandText = "EXECUTE sys.sp_refreshsqlmodule '$ObjectSchema.$ObjectName'"
$trycmd.Connection = $scon
try
{
$scon.Open()
$trycmd.ExecuteNonQuery() | Out-Null
}
catch [Exception]
{
$CurrentException = $_.Exception.Message -replace "'", "''";
#$ExceptionMessage = $ExceptionMessage + $CurrentException;
#Write-Host $DatabaseName"."$ObjectSchema"."$ObjectName ":"
#Write-Host $_.Exception.Message
#Write-Host $CurrentException;
}
finally
{
$scon.Close()
$scon.Dispose()
}
Return $CurrentException;
}
$db = $serv.Databases[$db_name];
$CombinedExceptionMessage = "";
foreach ($proc in $db.StoredProcedures | Where-Object {$_.IsSystemObject -eq $false})
{
$NewExceptionMessage = "";
$o = $proc.Name
$sc = $proc.Schema
if ($sc -ne "tSQLt" -and $sc -ne "SQLCop")
{
$NewExceptionMessage = CheckObject $db.Name $sc $o
if ($NewExceptionMessage)
{
$CombinedExceptionMessage = $CombinedExceptionMessage + $db.Name + "." + $sc + "." + $o + ": ";
$CombinedExceptionMessage = $CombinedExceptionMessage + $NewExceptionMessage.replace("`n","").replace("`r","") + "`r`n";
$NewExceptionMessage = "";
}
}
}
foreach ($trig in $db.Triggers | Where-Object {$_.IsSystemObject -eq $false})
{
$NewExceptionMessage = "";
$o = $trig.Name
$sc = $trig.Schema
$NewExceptionMessage = CheckObject $db.Name $sc $o
if ($sc -ne "tSQLt" -and $sc -ne "SQLCop")
{
$NewExceptionMessage = CheckObject $db.Name $sc $o
if ($NewExceptionMessage)
{
$CombinedExceptionMessage = $CombinedExceptionMessage + $db.Name + "." + $sc + "." + $o + ": ";
$CombinedExceptionMessage = $CombinedExceptionMessage + $NewExceptionMessage.replace("`n","").replace("`r","") + "`r`n";
$NewExceptionMessage = "";
}
}
}
foreach ($udf in $db.UserDefinedFunctions | Where-Object {$_.IsSystemObject -eq $false})
{
$NewExceptionMessage = "";
$o = $udf.Name
$sc = $udf.Schema
$NewExceptionMessage = CheckObject $db.Name $sc $o
if ($sc -ne "tSQLt" -and $sc -ne "SQLCop")
{
$NewExceptionMessage = CheckObject $db.Name $sc $o
if ($NewExceptionMessage)
{
$CombinedExceptionMessage = $CombinedExceptionMessage + $db.Name + "." + $sc + "." + $o + ": ";
$CombinedExceptionMessage = $CombinedExceptionMessage + $NewExceptionMessage.replace("`n","").replace("`r","") + "`r`n";
$NewExceptionMessage = "";
}
}
}
foreach ($view in $db.Views | Where-Object {$_.IsSystemObject -eq $false})
{
$NewExceptionMessage = "";
$o = $view.Name
$sc = $view.Schema
$NewExceptionMessage = CheckObject $db.Name $sc $o
if ($sc -ne "tSQLt" -and $sc -ne "SQLCop")
{
$NewExceptionMessage = CheckObject $db.Name $sc $o
if ($NewExceptionMessage)
{
$CombinedExceptionMessage = $CombinedExceptionMessage + $db.Name + "." + $sc + "." + $o + ": ";
$CombinedExceptionMessage = $CombinedExceptionMessage + $NewExceptionMessage.replace("`n","").replace("`r","") + "`r`n";
$NewExceptionMessage = "";
}
}
}
if ($CombinedExceptionMessage)
{
Write-Host $CombinedExceptionMessage;
exit 1;
}
Probably not the most elegant, but it works.