1

J'explore la gestion des versions VSTS et je voulais sauvegarder ma base de données de production hébergée sur Azure SQL DB avant d'y appliquer des scripts de migration. Je ne parviens pas à trouver une tâche particulière ou un moyen préféré d'attendre que la base de données SQL Azure soit entièrement sauvegardée pour que je puisse poursuivre le déploiement uniquement après que la base de données a été correctement sauvegardée. J'ai regardé soit en utilisant une tâche PowerShell ou une tâche Azure SQL CMD, mais je ne suis pas sûr de savoir comment faire en sorte que le reste des tâches attende la fin de la sauvegarde. Apprécierait si quelqu'un pouvait me diriger dans la bonne direction. Merci.Sauvegarde DB SQL Azure pendant la version VSTS

+0

Je ne crois pas qu'il existe une tâche standard ou quelque chose de proche. Cela devrait vous aider à démarrer. Vous devrez interroger le statut de la copie cible en boucle: https://www.mssqltips.com/sqlservertip/2235/creating-backups-and-copies-of-your-sql-azure-databases/ – jessehouwing

Répondre

0

Vous pouvez sauvegarder Azure base de données SQL et vérifier l'état dans une boucle.

$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 

Plus d'informations, vous pouvez consulter Export an Azure SQL database to a BACPAC file.

Une autre méthode consiste à sauvegarder la base de données Azure SQL en appelant la méthode Microsoft.SqlServer.Dac.DacServices.ExportBacpac avec PowerShell.

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() 

Remarque: L'utilisation de l'ensemble dans ce package: Microsoft.SqlServer.Dac 1.0.3 (j'ajouter au contrôle de code source et plan pour construire un agent)

D'autre part, d'ajouter la règle de pare-feu, vous pouvez vous référer à cette Discussion: Deploy Dacpac packages via power shell script to Azure SQL Server. Par ailleurs, vous pouvez créer l'étape/tâche de génération/libération personnalisée avec ces scripts PowerShell. Add a build task

+0

merci , cela semble être une bonne option. Je vais l'essayer et faire un rapport. – Sanddy

+0

@Sanddy Quel est le résultat maintenant? Le résolvez-vous? –

+0

pas encore, j'ai regardé la création d'une tâche de construction personnalisée que vous avez liée, mais je ne suis pas très familier avec PowerShell et comment écrire l'extension de sorte qu'il installe également le sdk Azure Powershell le long. J'ai regardé les extensions VS Build existantes dans Git, mais elles semblent utiliser beaucoup de bibliothèques Powershell internes, rien de simple. Donc maintenant j'essaie d'expérimenter Azure CLI, j'ai le script CLI qui fonctionne localement. Mais lorsque j'utilise le même script dans une tâche CLI Inline Azure, cela donne une erreur "## [error] Unhandled: Failed which: Not found az: null"! – Sanddy