Home Forums Programming Powershell Is there a way to check stored procs affected by change to a view? RE: Is there a way to check stored procs affected by change to a view?

  • Here's the code for anyone interested:

    clear

    $strSrv = "MyServerName"

    $objSrv = New-object Microsoft.SqlServer.Management.Smo.Server $strSrv

    $objdb = $objSrv.Databases["MyDBName"]

    $ObjectsToCheck = $objdb.StoredProcedures | ?{($_.textbody -like '*MyModifiedObject*')}

    $ObjectsToCheck += $objdb.UserDefinedFunctions | ?{($_.textbody -like '*MyModifiedObject*')}

    $ObjectsToCheck += $objdb.Views | ?{($_.textbody -like '*MyModifiedObject*')}

    $ObjectsToCheck += $objdb.Triggers | ?{($_.textbody -like '*MyModifiedObject*')}

    # Add other objects types that you may use.

    $ObjectsToRecode = @()

    $ObjectsToCheck | % {$objSp = $_; $spName = $_.Name;

    try

    {

    $query = "EXEC sys.sp_refreshsqlmodule '$spName'"

    $objdb.ExecuteNonQuery($Query)

    }

    catch

    {

    $ObjectsToRecode += $spName

    }

    }

    $ObjectsToRecode

    EDIT: Credit where it's due dept.:

    http://beyondrelational.com/modules/2/blogs/28/posts/10425/tsql-how-to-revalidaterefreshrecompile-all-stored-procedures-in-a-database.aspx