azure-sql-database - 在 VSTS 发布期间备份 Azure SQL DB

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

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

最佳答案

您可以备份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

关于azure-sql-database - 在 VSTS 发布期间备份 Azure SQL DB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43449783/

相关文章:

sql - 如何从 Mac 上的 azure 数据工作室的 bak 文件恢复数据库

bash - postgresql: .pgpass 不工作

powershell - Get-AzureRmAppServicePlan 和 Get-AzureRmWebApp 在 Runbook 中返回异常

powershell - Get-AzureAccount 在 Az 模块中不起作用

azure - Get-AzurePublishSettingsFile 不显示所有订阅

asp.net-mvc - 如何使用 Azure 网站通过私有(private) IP 连接到 Sql Server VM

sql-server - 通过直接查询连接到 Azure 专用 SQL 池的 Power BI 报表性能缓慢

azure - 我们如何在azure sql管理实例中连接只读意图?

来自 RDB 基础文件的 Redis AOF

sql-server - 自动恢复SQL Server数据库备份以进行测试