我编写了一个 PowerShell 脚本来使用 Azure 自动化自动复制数据库。它已经工作了几个月,但出现了一些与 Get-AzureSqlDatabaseCopy 命令相关的奇怪行为。在进入下一步之前,我使用 Get-AzureSqlDatabaseCopy 检查数据库副本是否已完成。如果数据库副本没有及时完成,则会导致错误。
$SqlServer = 'servername.database.windows.net'
$DatabaseSource = 'Database1'
$DatabaseDestination = 'Database2'
Write-Output "Starting database copy - $DatabaseDestination"
Start-AzureSqlDatabaseCopy -ServerName $SqlServer -DatabaseName $DatabaseSource -PartnerServer $SqlServer -PartnerDatabase $DatabaseDestination
$i = 0
$secs = 0
do
{
$check = Get-AzureSqlDatabaseCopy -ServerName $SqlServer -DatabaseName $DatabaseDestination
$i = $check.PercentComplete
Write-Output "Database Copy ($DatabaseDestination) not complete in $secs seconds"
$secs += 10
Start-Sleep -s 10
}
while($i -ne $null -and $secs -lt 600)
此代码过去运行良好,数据库复制通常需要 30-40 秒才能完成。似乎有问题
$check = Get-AzureSqlDatabaseCopy -ServerName $SqlServer -DatabaseName $DatabaseDestination
$check 看起来没有被设置为任何值,因此 $i 为空并且循环不起作用。这是上周才开始发生的事情。我浏览了一些工作记录,直到星期四它一直运行良好。我今天运行了一些测试数据库副本,并且始终没有设置 $check。
有谁知道这种行为变化的原因?是否有更好的方法在 Azure 自动化中使用 PowerShell 监控数据库副本?