Backup de Base de Datos SQL Azure Mejorado y PowerShell


Hay una entrada más nueva basada en esta idea usando la nueva API AzureRM
Ejecución de scripts de PowerShell en Azure Automation y Backup de SQL Azure
.

En esta entrada voy presentar un script de PowerShell que nos va a permitir realizar un backup de una base de datos de Azure con tan solo un click.

Hace tiempo publique la entrada Backup de Base de Datos SQL Azure con tan un solo comando. En el Portal de Azure posteriormente utilizando la misma idea se incorporo la posibilidad de realizar backups en la nube. Mediante la API PowerShell de Azure vamos a ser capaces de conseguir nuestro objetivo ;-).

Uso

  • 1.- Editamos los parámetros de configuración del script
    • $serverName: Nombre de nuestro servidor de Sql en la Nube.
    • $databaseOriginal: Nombre de la base de datos que queremos realizar el backup.
    • $databaseCopy: Nombre de base de datos temporal para mantener transaccionalidad del backup.
    • $StorageAccountName: Cuenta del Storage donde almacenaremos el backup.
    • $storageContainerName: Container donde donde almacenaremos el backup.
  • 2.- Ejecutamos el powerShell
    powershell .\Script.ps1
    
    • 2.1.-Introducimos las credenciales de acceso a nuestra cuenta de Azure.
      SignInAzure
    • 2.2.- Introducimos el usuario de acceso al Sql Server (sin @ServerName).
      SingInDatabase
    • 2.3.- Al final de la ejecución del script se muestra la ruta al blob donde se ha almacenado el backup (la url que esta en fuente roja con fondo amarillo :-))
      Backup Database

    El Script

    $serverName = "SqlServerName"
    $databaseOriginal = "database"
    $databaseCopy = "databaseCopy"
    $StorageAccountName = "storageName"
    $storageContainerName = "containerName"
    
    Add-AzureAccount
    #if we have multiple Subscriptions 😉 
    #       Get-AzureSubscription 
    #       Select-AzureSubscription "Subscription"
    
    #Copy Database 
    Start-AzureSqlDatabaseCopy -ServerName $serverName -DatabaseName $databaseOriginal -PartnerDatabase $databaseCopy
    do
    {
        sleep -Seconds 10
        $statusCopy = Get-AzureSqlDatabaseCopy -ServerName $serverName -DatabaseName $databaseCopy
        $exist = $statusCopy.PercentComplete
    	Write-Host $exist
    }
    while ($exist -ne $null)
    
    #Backup Database Copied
    #Doesn't work on Start-AzureSqlDatabaseExport 
    #$sqlContext = New-AzureSqlDatabaseServerContext -ServerName $serverName -UseSubscription
    $credential = Get-Credential
    $sqlContext = New-AzureSqlDatabaseServerContext -ServerName $serverName -credential $credential
    $SubscriptionName =  (Get-AzureSubscription -Current).SubscriptionName
    Write-Host "SubscriptionName:"$SubscriptionName
    Set-AzureSubscription -SubscriptionName $SubscriptionName -CurrentStorageAccountName $StorageAccountName
    $storageContainer = Get-AzureStorageContainer -Name $storageContainerName
    $now=Get-Date -format 'yyyyMMdd_HHmmss'
    $storageBlobName = "BackupOf" + $databaseOriginal + $now + ".bacpac"
    $exportRequest = Start-AzureSqlDatabaseExport -SqlConnectionContext $sqlContext -StorageContainer $storageContainer -DatabaseName $databaseCopy -BlobName $storageBlobName
    Get-AzureSqlDatabaseImportExportStatus -Request $exportRequest
    do
    {
        sleep -Seconds 10
        $statusExport = Get-AzureSqlDatabaseImportExportStatus -Request $exportRequest
        $status = $statusExport.Status
    	Write-Host $status
    }
    while ($status -ne 'Completed')
    
    #Remove Copied Database
    Remove-AzureSqlDatabase -ServerName $serverName -DatabaseName $databaseCopy -Force
    
    Write-Host "The backup is on this url:"
    Write-Host "https://"$StorageAccountName".blob.core.windows.net/"$storageContainerName"/"$storageBlobName".bacpac" -foregroundcolor red -backgroundcolor yellow
    

    Como funciona

    Anuncios
Esta entrada fue publicada en Azure, PowerShell, Sql Server y etiquetada . Guarda el enlace permanente.

2 respuestas a Backup de Base de Datos SQL Azure Mejorado y PowerShell

  1. Pingback: Backup de Base de Datos SQL Azure con tan un solo comando | Pensando bajo la lluvia

  2. Pingback: Ejecución de scripts de PowerShell en Azure Automation y Backup de SQL Azure | Pensando bajo la lluvia

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s