Last active
April 15, 2023 12:14
-
-
Save manishtiwari25/fd0f7f012455f692c26878638e48764e to your computer and use it in GitHub Desktop.
related to http://blogs.bitesinbyte.com/
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
param( | |
[string]$storageAccount, | |
[string]$blobContainer, | |
[string]$instanceName, | |
[string]$databaseName, | |
[string]$storageKey | |
) | |
import-module sqlps; | |
$sqlPath = "sqlserver:\sql\$($env:COMPUTERNAME)" | |
$credentialName = "backupCredential-$(Get-Random)" | |
$backupFile = "AxDB_PAR_$(Get-Date -Format yyyy_MM_dd_HH_mm_ss).bak" | |
$path = "$($sqlPath)\$($instanceName)\credentials" | |
$backupUrlContainer = "https://$storageAccount.blob.core.windows.net/$blobContainer/$($backupFile)" | |
$removePath = "$($path)\$($credentialName)" | |
$secureString = ConvertTo-SecureString $storageKey -AsPlainText -Force | |
try { | |
Set-Location $sqlPath | |
$secureString = ConvertTo-SecureString $storageKey -AsPlainText -Force | |
Write-Host "Generate credential: " $credentialName | |
New-SqlCredential -Name $credentialName -Identity $storageAccount -Secret $secureString -Path $path -ea Stop | Out-Null | |
Write-Host "Backup database: " $backupUrlContainer | |
Backup-SqlDatabase -Database $databaseName -Path $path -SqlCredential $credentialName -BackupFile $backupUrlContainer -BackupAction Database -NoRewind -BackupSetName "AxDB-Full Database Backup" -CompressionOption On | |
Write-Host "Remove credential: " $credentialName | |
Remove-SqlCredential -Path $removePath -ea Stop | Out-Null | |
}catch{ Write-Host $_.Exception.Message } | |
Write-Host "Done" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
trigger: none | |
pool: | |
vmImage: ubuntu-latest | |
variables: | |
- group: Database-Backup | |
steps: | |
- task: AzureCLI@2 | |
displayName: Start the VM | |
inputs: | |
azureSubscription: $(AZVMServiceConnection) | |
scriptType: pscore | |
scriptLocation: inlineScript | |
inlineScript: az vm start -g $(VMResourceGroup) -n $(VMName) | |
- task: AzureCLI@2 | |
name: storageKeyTask | |
displayName: Fetch Storage Account Key | |
inputs: | |
azureSubscription: $(AZBackupServiceConnection) | |
scriptType: pscore | |
scriptLocation: inlineScript | |
inlineScript: | | |
$storageKey = az storage account keys list -g $(StorageAccountResourceGroup) -n $(StorageAccount) --query [0].value | |
echo "##vso[task.setvariable variable=storageSecretKey;issecret=true]$storageKey" | |
- task: AzureCLI@2 | |
displayName: Run VM Command | |
inputs: | |
azureSubscription: $(AZVMServiceConnection) | |
scriptType: pscore | |
scriptLocation: inlineScript | |
inlineScript: az vm run-command invoke --command-id RunPowerShellScript -g $(VMResourceGroup) -n $(VMName) --scripts '@database-backup.ps1' --parameters 'storageAccount=$(StorageAccount)' 'blobContainer=$(BlobContainer)' 'instanceName=$(InstanceName)' 'databaseName=$(DatabaseName)' 'storageKey=$(storageSecretKey)' | |
- task: AzureCLI@2 | |
displayName: Stop the VM | |
continueOnError: true | |
inputs: | |
azureSubscription: $(AZVMServiceConnection) | |
scriptType: pscore | |
scriptLocation: inlineScript | |
inlineScript: az vm deallocate -g $(VMResourceGroup) -n $(VMName) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment