Functions/Operations/Update-CodeObjectMetadata.ps1


function Update-CodeObjectMetadata
{
    <#
    .SYNOPSIS
    Updates the metadata for a stored procedure, user-defined function, view, trigger, etc.
 
    .DESCRIPTION
    SQL Server has a stored procedure, `sys.sp_refreshsqlmodule`, which will refresh/update a the objects used by a code object (stored procedure, user-defined function, view, etc.) if that object has changed since the code object was created.
 
    .LINK
    http://technet.microsoft.com/en-us/library/bb326754.aspx
 
    .EXAMPLE
    Update-CodeObjectMetadata 'GetUsers'
 
    Demonstrates how to update the `GetUsers` code object.
 
    .EXAMPLE
    Update-CodeObjectMetadata -SchemaName 'example' 'GetUsers'
 
    Demonstrates how to update a code object in a custom schema, in this case the `example` schema.
    #>

    [CmdletBinding(DefaultParameterSetName='CodeObject')]
    param(
        [Parameter()]
        [string]
        # The code object's schema name. Default is `dbo`.
        $SchemaName = 'dbo',

        [Parameter(Mandatory=$true,Position=0)]
        [string]
        # The name of the code object.
        $Name,

        [Parameter(Mandatory=$true,ParameterSetName='DATABASE_DDL_TRIGGER')]
        [Switch]
        # The object is a database DDL trigger.
        $DatabaseDdlTrigger,

        [Parameter(Mandatory=$true,ParameterSetName='SERVER_DDL_TRIGGER')]
        [Switch]
        # The object is a server DDL trigger.
        $ServerDdlTrigger
    )

    Set-StrictMode -Version 'Latest'

    $namespace = $null
    if( $PSCmdlet.ParameterSetName -like '*_DDL_TRIGGER' )
    {
        $namespace = $PSCmdlet.ParameterSetName
    }

    New-Object 'Rivet.Operations.UpdateCodeObjectMetadataOperation' $SchemaName,$Name,$namespace
}