1

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

+0

我不相信有一个标准任务或任何接近它的东西。这应该让你开始,但。您必须在循环中查询目标副本的状态:https://www.mssqltips.com/sqlservertip/2235/creating-backups-and-copies-of-your-sql-azure-databases/ – jessehouwing

回答

0

您可以备份SQL Azure的数据库,并检查在一个循环的状态。

$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

+0

谢谢,这似乎是一个不错的选择。将尝试并报告。 – Sanddy

+0

@Sanddy现在结果如何?你解决了吗? –

+0

还没有,我在创建链接时创建了一个自定义构建任务,但我对PowerShell并不熟悉,以及如何编写扩展,以便它还安装Azure Powershell sdk。我在Git中查看了现有的VS Build扩展,但他们似乎使用了很多内部Powershell库,没有什么简单的。 所以现在我试图尝试使用Azure CLI,我的CLI脚本在本地工作。但是,当我在Inline Azure CLI任务中使用相同的脚本时,它会出现“## [error] Unhandled:Failed which:Not found az:null”错误! – Sanddy

相关问题