为了更好地验证我的数据库脚本的部署,作为我 Octopus 部署的第一步,我想使用生产数据库的镜像预初始化我的暂存数据库。我正在使用 SQL Azure 和 DACFX。我很好奇是否有其他人尝试过这个......
Start-AzureSqlDatabaseCopy
用于此操作的 PS cmdlet 是否正确?- 这会影响我的生产环境的性能吗?
- 还有其他选择吗?
更新
我开发了下面的脚本,这似乎工作。但是,在数据库完成复制之前,我无法阻止脚本的完成。在某些时候Get-AzureSqlDatabaseCopy
会抛出错误(也许 Azure 无法处理负载?)。
Import-Module 'C:\Program Files (x86)\Microsoft SDKs\Windows Azure\PowerShell\ServiceManagement\Azure\Azure.psd1'
$serverName = "..."
$sourceDbName = "..."
$targetDbName = "..."
$testdb = Get-AzureSqlDatabase -ServerName $serverName -DatabaseName $targetDbName -ErrorAction SilentlyContinue
IF (!$testdb)
{
Write-Host "TestDB Not Found"
}
ELSE
{
Remove-AzureSqlDatabase -ServerName $serverName -Database $testdb -Force
}
$dbCopy = Start-AzureSqlDatabaseCopy -ServerName $serverName -DatabaseName $sourceDbName -PartnerDatabase $targetDbName
WHILE ($dbCopy)
{
Write-Progress -Activity "Copying Database" -PercentComplete [int]$dbCopy.PercentComplete
$dbCopy = Get-AzureSqlDatabaseCopy -ServerName $serverName -DatabaseCopy $dbCopy
# Sleep 10 seconds
[System.Threading.Thread]::Sleep(10000);
}
Write-Host "Complete"
我仍然不相信这是正确的方法,它似乎给 Azure 带来了很多负担(由于某种原因,在运行时无法登录我的门户)。任何想法将不胜感激...