在VSTS版本期间备份Azure SQL DB

时间:2017-04-17 10:34:17

标签: azure-sql-database database-backups azure-powershell azure-pipelines azure-pipelines-release-pipeline

我正在探索VSTS版本管理,我想在应用任何迁移脚本之前备份我在Azure SQL DB上托管的生产数据库。我没有找到任何特定的任务或首选方式等待Azure SQL DB完全备份,以便我可以在正确备份数据库后继续部署。 我已经查看过使用PowerShell任务或Azure SQL CMD任务,但我不确定如何使其余任务等待备份完成。 如果有人能指出我正确的方向,我将不胜感激。谢谢。

2 个答案:

答案 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