Good afternoon,

I've been working with one of my DBAs to automate the failover of a SQL
mirrored database using PowerShell. This script will be used in recovery
plans within VMware Site Recovery Manager.

We have the script functional except for my error handling. I have the
relevant portion of script pasted below. I'm attempting to use Try/Catch
blocks and -erroraction, but I think I'm going about this the wrong way.
When I run the script, I get the following error:

You must provide a value expression on the right-hand side of the '-'
operator.
At line:1 char:28
+ ($($sqlconnection.open()) - <<<< erroraction stop)
    + CategoryInfo          : ParserError: (:) [],
ParentContainsErrorRecordEx
   ception
    + FullyQualifiedErrorId : ExpectedValueExpression

Any pointers?

==========================================

# Failover Process
 Try {
  # Planned failover
 Add-Content $LogFile "Attempting Planned Failover for $SQLDBName on $Date"
 Add-Content $LogFile ""
    $SqlQuery1 = 'EXEC ADM_Utilities.dbo.aksp_Initiate_Mirror_Failover ' +
$SQLDBName
 Try {
  $SqlConnection.Open() -ErrorAction Stop
  Add-Content $LogFile "Connection to $SQLServer established..."
 } Catch {
  Add-Content $LogFile "*** ERROR: Connection to $SQLServer could not be
established! ***"
  Exit
 }
 Add-Content $LogFile "Executing Planned Failover"
 $SqlCmd.CommandText = $SqlQuery1
    $SqlCmd.ExecuteNonQuery() -ErrorAction Stop
 Add-Content $LogFile "Planned Failover for $SQLDBName completed
successfully"
 Add-Content ""
} Catch {
    # Forced Failover
 Add-Content $LogFile "*** ERROR: Planned Failover for $SQLDBName was
unsuccessful! ***"
 Add-Content $LogFile ""
 Add-Content $LogFile "Attempting Forced Failover for $SQLDBName on $Date"
 Add-Content $LogFile ""
    $SqlQuery1 = 'ALTER DATABASE ' + $SQLDBName + ' SET PARTNER
FORCE_SERVICE_ALLOW_DATA_LOSS'
    $SqlQuery2 = 'EXEC ADM_Utilities.dbo.aksp_Failover_Recovery ' +
$SQLDBName
 Try {
  $SqlConnection.Open() -ErrorAction Stop
  Add-Content $LogFile "Connection to $SQLServer established..."
 } Catch {
  Add-Content $LogFile "*** ERROR: Connection to $SQLServer could not be
established! ***"
  Exit
 }
   Add-Content $LogFile "Executing Forced Failover"
 $SqlCmd.CommandText = $SqlQuery1
    $SqlCmd.ExecuteNonQuery()
    $SqlCmd.CommandText = $SqlQuery2
    $SqlCmd.ExecuteNonQuery() -ErrorAction Stop
 Add-Content $LogFile "Forced Failover for $SQLDBName completed
successfully"
 Add-Content ""
}

=============================


================================================
Did you know you can also post and find answers on PowerShell in the forums?
http://www.myitforum.com/forums/default.asp?catApp=1

Reply via email to