Automated stored procedures on Microsoft Azure

I needed to run a stored procedure in a Azure database every day at midnight.

To do this, set up an Azure automation account. Then create a new runbook with the following powershell script. Finally, you will need to create a credential asset to plug into this script as an input parameter.

Once it’s set up you can schedule it as a nightly job.


workflow DailyExpirationCheck 
{
    param
    (
        # Fully-qualified name of the Azure DB server 
        [parameter(Mandatory=$true)] 
        [string] $SqlServerName,
        
        # Database name on the Azure DB server 
        [parameter(Mandatory=$true)] 
        [string] $DatabaseName,
		
		# Credentials for $SqlServerName stored as an Azure Automation credential asset
		# When using in the Azure Automation UI, please enter the name of the credential asset for the "Credential" parameter
        [parameter(Mandatory=$true)] 
        [PSCredential] $Credential
    )
    
    inlinescript{
        
        # Set up credentials   
        $ServerName = $Using:SqlServerName
        $DatabaseName = $Using:DatabaseName
        $UserId = $Using:Credential.UserName
        $Password = ($Using:Credential).GetNetworkCredential().Password
        
        # Create connection to DB
        $DatabaseConnection = New-Object System.Data.SqlClient.SqlConnection
        $DatabaseConnection.ConnectionString = "Server = $ServerName; Database = $DatabaseName; User ID = $UserId; Password = $Password;"
        $DatabaseConnection.Open();
        
        # Create command to execute stored procedures
        $DatabaseCommand = New-Object System.Data.SqlClient.SqlCommand
        $DatabaseCommand.Connection = $DatabaseConnection
        $DatabaseCommand.CommandType = [System.Data.CommandType]::StoredProcedure
        
        # Update statuses by calling our stored procedure
        $DatabaseCommand.CommandText = 
            "Update_After_EndDate_Passed"
        $DatabaseCommand.ExecuteNonQuery() | out-null
        if($? -eq 1)
        {
            Write-Output "EndDate check successfully completed."   
        }
     
        # Close connection to DB
        $DatabaseConnection.Close() 
        
        Write-Output "[Daily expiration checks complete.]"
    }    
}

Leave a Reply

Your email address will not be published. Required fields are marked *