在 VSTS 发布期间备份 Azure SQL 数据库
Backup Azure SQL DB during VSTS Release
-
database-backups
-
azure-powershell
-
azure-sql-database
-
azure-pipelines
-
azure-pipelines-release-pipeline
我正在探索 VSTS 发布管理,我想在应用任何迁移脚本之前备份托管在 Azure SQL 数据库上的生产数据库。我找不到任何特定的任务或等待 Azure SQL 数据库完全备份的首选方法,以便我只能在正确备份数据库后才能继续部署。
我看过使用 PowerShell 任务或 Azure SQL CMD 任务,但我不确定如何让其余任务等待备份完成。
如果有人能指出我正确的方向,我将不胜感激。谢谢。
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
您可以备份 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(我将其添加到源代码管理并映射到构建代理)
另一方面,要添加防火墙规则,可以参考这个帖子:.
顺便说一句,您可以使用这些 PowerShell 脚本构建自定义 build/release step/task。 Add a build task
database-backups
azure-powershell
azure-sql-database
azure-pipelines
azure-pipelines-release-pipeline
我正在探索 VSTS 发布管理,我想在应用任何迁移脚本之前备份托管在 Azure SQL 数据库上的生产数据库。我找不到任何特定的任务或等待 Azure SQL 数据库完全备份的首选方法,以便我只能在正确备份数据库后才能继续部署。 我看过使用 PowerShell 任务或 Azure SQL CMD 任务,但我不确定如何让其余任务等待备份完成。 如果有人能指出我正确的方向,我将不胜感激。谢谢。
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
您可以备份 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(我将其添加到源代码管理并映射到构建代理)
另一方面,要添加防火墙规则,可以参考这个帖子:
顺便说一句,您可以使用这些 PowerShell 脚本构建自定义 build/release step/task。 Add a build task