0

復元操作が完了した後にデータベースを縮小しようとしていますが、いくつかの問題が発生しています。この例外が発生しましたが、このスクリプトに Azure Automation Workflows でサポートされていないものが含まれているのではないでしょうか?

指定された名前付きパラメーターを使用してパラメーター セットを解決できません。

workflow insertflowname
{
  <#  
  .SYNOPSIS   

この Runbook の目的は、Azure Automation ワークフローを使用して特定のデータベースを新しいデータベースに復元する方法を示すことです。その後、Basic に縮小されます。

.NOTES  

#>  


# Specify Azure Subscription Name

$subName = 'insertsubscription name'

# Connect to Azure Subscription
Connect-Azure -AzureConnectionName $subName
Select-AzureSubscription -SubscriptionName $subName

# Define source databasename
$SourceDatabaseName = 'insert database name'

# Define source server
$SourceServerName = 'insert source server'

# Define destination server
$TargetServerName = 'insert destination server'

Write-Output "`$SourceServerName [$SourceServerName]"
Write-Output "`$TargetServerName [$TargetServerName]"
Write-Output "`$SourceDatabaseName [$SourceDatabaseName]"

Write-Output "Retrieving recoverable database details for database [$SourceDatabaseName] on server [$SourceServerName]."
$RecoverableDatabase = Get-AzureSqlRecoverableDatabase –ServerName $SourceServerName -DatabaseName $SourceDatabaseName
$TargetDatabaseName = "$SourceDatabaseName-$($RecoverableDatabase.LastAvailableBackupDate.ToString('O'))"
Write-Output "`$TargetDatabaseName [$TargetDatabaseName]"

Write-Output "Starting recovery of database [$SourceDatabaseName] to server [$TargetServerName] as database [$TargetDatabaseName]."
Start-AzureSqlDatabaseRecovery -SourceDatabase $RecoverableDatabase -TargetServerName $TargetServerName –TargetDatabaseName $TargetDatabaseName 

$PollingInterval = 10
Write-Output "Monitoring status of recovery operation, polling every [$PollingInterval] second(s)."
$KeepGoing = $true
while ($KeepGoing) {
    $operation = Get-AzureSqlDatabaseOperation -ServerName $TargetServerName -DatabaseName $TargetDatabaseName | Where-Object {$_.Name -eq "DATABASE RECOVERY"} | Sort-Object StartTime -Descending
    if ($operation) {
        $operation[0]
        if ($operation[0].State -eq "COMPLETED") { $KeepGoing = $false }
        if ($operation[0].State -eq "FAILED") {
            # Throw error
            $KeepGoing = $false
        }
    } else {
        # Throw error since something went wrong and object was not created
        # May want to have this retry a few times before giving up or at least notify somebody
        # since at this point the recovery has been kicked off and you don't want the database
        # restore to remain at the elevated service level.
        $KeepGoing = $false
    }
    if ($KeepGoing) { Start-Sleep -Seconds $PollingInterval }
}

if ($operation[0].State -eq "COMPLETED") {
    Write-Output "Setting service level for database [$TargetDatabaseName] on server [$TargetServerName] to Basic."
    $ServiceObjective = Get-AzureSQLDatabaseServiceObjective –ServerName $TargetServerName –ServiceObjectiveName "Basic"
    $ServiceObjective
    Set-AzureSqlDatabase –ServerName $TargetServerName –DatabaseName $TargetDatabaseName –Edition "Basic" –ServiceObjective $ServiceObjective -MaxSizeGB 2 –Force
   }
}
4

1 に答える 1

3

ここで説明されている問題に遭遇している可能性があります。 -resolved-using-the-specified-named-parameters?forum=azureautomation

概要: PowerShell ワークフローでは、パラメーター名を使用し、位置パラメーターに依存しないでください。この場合、-FilterScript パラメーター名を Where-Object に追加する必要があります。

于 2015-05-29T06:02:25.583 に答える