我正在探索VSTS版本管理,我想在应用任何迁移脚本之前备份我在Azure SQL DB上托管的生产数据库。我没有找到任何特定的任务或首选方式等待Azure SQL DB完全备份,以便我可以在正确备份数据库后继续部署。 我已经查看过使用PowerShell任务或Azure SQL CMD任务,但我不确定如何使其余任务等待备份完成。 如果有人能指出我正确的方向,我将不胜感激。谢谢。
答案 0 :(得分:1)
您可以备份Azure SQL数据库并循环检查状态。
$exportRequest = New-AzureRmSqlDatabaseExport -ResourceGroupName $ResourceGroupName -ServerName $ServerName `
-DatabaseName $DatabaseName -StorageKeytype $StorageKeytype -StorageKey $StorageKey -StorageUri $BacpacUri `
-AdministratorLogin $creds.UserName -AdministratorLoginPassword $creds.Password
$importStatus = Get-AzureRmSqlDatabaseImportExportStatus -OperationStatusLink $importRequest.OperationStatusLink
[Console]::Write("Exporting")
while ($importStatus.Status -eq "InProgress")
{
$importStatus = Get-AzureRmSqlDatabaseImportExportStatus -OperationStatusLink $importRequest.OperationStatusLink
[Console]::Write(".")
Start-Sleep -s 10
}
[Console]::WriteLine("")
$importStatus
更多信息,请参阅Export an Azure SQL database to a BACPAC file。
另一种方法是,您可以通过PowerShell调用Microsoft.SqlServer.Dac.DacServices.ExportBacpac方法来备份Azure SQL数据库。
param([string]$ConnectionString, [string]$DatabaseName,[string]$OutputFile,[string]$s)
Add-Type -Path "$s\AzureDatabaseSolution\SQLDatabase\lib\Microsoft.SqlServer.Dac.dll"
$now = $(Get-Date).ToString("HH:mm:ss")
$Services = new-object Microsoft.SqlServer.Dac.DacServices $ConnectionString
Write-Host "Starting at $now"
$Watch = New-Object System.Diagnostics.StopWatch
$Watch.Start()
$Services.ExportBacpac($OutputFile, $DatabaseName)
$Watch.Stop()
Write-Host "Backup completed in" $Watch.Elapsed.ToString()
注意:使用此包中的程序集:Microsoft.SqlServer.Dac 1.0.3(我将其添加到源代码管理并映射到构建代理程序)
另一方面,要添加防火墙规则,您可以参考以下主题:Deploy Dacpac packages via power shell script to Azure SQL Server。
顺便说一句,您可以使用这些PowerShell脚本构建自定义构建/发布步骤/任务。 Add a build task
答案 1 :(得分:0)
Azure SQL数据库会不断自动备份。如果您尝试创建数据库副本或将数据库存档到BACPAC文件,则可以执行任一操作。
https://docs.microsoft.com/en-us/azure/sql-database/sql-database-automated-backups https://docs.microsoft.com/en-us/azure/sql-database/sql-database-copy https://docs.microsoft.com/en-us/azure/sql-database/sql-database-export