This month, my fellow IT Pro Technical Evangelists and I are authoring a new articles series on 20 Key Scenarios with Windows Azure Infrastructure Services.  You can catch the full series at http://aka.ms/CloudTop20.

In today's article in this series, we'll discuss backup of SQL databases and logs to the Windows Azure cloud as an alternate off-site backup strategy to using tape.  I think every IT Pro I’ve ever met hates tape backups … but having an offsite component in your backup strategy is absolutely necessary for effective disaster recovery.  


With Windows Azure Infrastructure Services and SQL Server 2012 Service Pack 1 Cumulative Update 2, you can abandon tapes altogether with a secure online backup solution that provides immediate line-of-sight to your important database backups.  In this article, I’ll step through the process of using SQL Server 2012 SP1 CU2 native backup capabilities to create database backups on Windows Azure cloud storage.

Backup to the Cloud with new native Cloud Backup in SQL Server 2012! 

One of the new features provided in SQL Server 2012 Service Pack 1 Cumulative Update 2 is the ability to now backup SQL databases and logs to Windows Azure cloud storage using native SQL Server Backup via both Transact-SQL ( T-SQL ) and SQL Server Management Objects ( SMO ). 

Backup to cloud storage is a natural fit for disaster recovery, as our backups are instantly located offsite when completed.  And, the pay-as-you-go model of cloud storage economics makes it really cost effective – Windows Azure storage costs are less than $100/TB per month for geo-redundant storage based on current published costs as of this article’s date.  That’s less than the cost of a couple SDLT tapes! You can check out our current pricing model for Windows Azure Storage on our Price Calculator page.

What about Security? Are these backups encrypted?

The backups are transported offsite to Windows Azure Storage via an authenticated SSL-encrypted network communications path.  In addition, the actual backup data stored on the Windows Azure Storage platform is encrypted as well, if you enable Transparent Data Encryption (TDE) on your original SQL databases.  You'll find more details on enabling Transparent Data Encryption in the TechNet Library at: http://technet.microsoft.com/en-us/library/bb934049.aspx.

How do I get started?

To get started, you’ll need a Windows Azure subscription.  Good news! You can get a FREE 90-Day Windows Azure subscription to follow along with this article, evaluate and test … this subscription is 100% free for 90-days and there’s absolutely no obligation to convert to a paid subscription.

  • DO IT: Sign-up for a FREE 90-Day Windows Azure Subscription
     
    NOTE: When activating your FREE 90-Day Subscription for Windows Azure, you will be prompted for credit card information.  This information is used only to validate your identity and your credit card will not be charged, unless you explicitly convert your FREE Trial account to a paid subscription at a later point in time.

You’ll also need to download Cumulative Update 2 for SQL Server 2012 Service Pack 1 and apply that to the SQL Server instance with which you’ll be testing. 

Don’t have a SQL Server 2012 instance in your data center that you can test with?  No problem! You can spin up a SQL Server 2012 VM in the Windows Azure Cloud using your FREE 90-Day subscription.

Let’s grab some cloud storage!

Once you’ve got your Windows Azure subscription activated and your SQL Server 2012 lab environment patched with SP1 CU2, you’re ready to provision some cloud storage that can be used as a backup location for SQL databases …

  1. Launch the Windows Azure Management Portal and login with the credentials used when activating your FREE 90-Day Subscription above.
     
  2. Click Storage in the left navigation pane of the Windows Azure Management Portal.
     
    image
    Windows Azure Management Portal – Storage Accounts
     
  3. On the Storage page of the Windows Azure Management Portal, click +NEW on the bottom toolbar to create a new storage account location.
     
    image
    Creating a new Windows Azure Storage Account location
     
  4. Click Quick Create on the New > Storage popup menu and complete the fields as listed below:
     
    - URL: XXXbackup01 ( where XXX represents your initials in lowercase )
     
    - Region / Affinity Group: Select an available Windows Azure datacenter region for your new Storage Account. 
     
    NOTE: Because you will be using this Storage Account location for backup / disaster recovery scenarios, be sure to select a Datacenter Region that is not near to you for additional protection against disasters that may affect your entire local area.
     
    Click the Create Storage Account button to create your new Storage Account location.
     
  5. Wait for your new Storage Account to be provisioned. 
     
    image
    Provisioning new Windows Azure Storage Account
     

    Once the status of your new Storage Account shows as Online, you may continue with the next step.
     
  6. Select your newly created Storage Account and click the Manage Keys button on the bottom toolbar to display the Manage Access Keys dialog box.
     
    image
    Manage Access Keys dialog box
     
    Click the image button located next to the Secondary Access Key field to copy this access key to your clipboard for later use.
     
  7. Create a container within your Windows Azure Storage Account to store backups.  Click on the name of your Storage Account on the Storage page in the Windows Azure Management Portal to drill into the details of this account, then select the Containers tab located at the top of the page.
     
    image
    Containers tab within a Windows Azure Storage Account
     
    On the bottom toolbar, click the Add Container button to create a new container named “backups”.

You’ve now completed the provisioning of your new Windows Azure storage account location.

We’re ready to backup to the cloud!

When you’re ready to test a SQL database backup to the cloud, launch SQL Server Management Studio and connect to your SQL Server 2012 SP1 CU2 database engine instance.  After you’ve done this, proceed with the following steps to complete a backup …

  1. In SQL Server Management Studio, right-click on the database you wish to backup in the Object Explorer list pane and select New Query.
     
    image
    SQL Server Management Studio
     
  2. In the new SQL Query Window, execute the following Transact-SQL code to create a credential that can be used to authenticate to your Windows Azure Storage Account with secure read/write access:

    CREATE CREDENTIAL myAzureCredential
    WITH IDENTITY='XXXbackup01',
    SECRET=’PASTE IN YOUR COPIED ACCESS KEY HERE';

    Prior to running this code, be sure to replace XXXbackup01 with the name of your Windows Azure Storage Account created above and paste in the Access Key you previously copied to your clipboard.

  3. In the SQL Query Window, execute the following Transact-SQL code to perform the database backup to your Windows Azure Storage Account:
     
    BACKUP DATABASE database_name TO
    URL='https://XXXbackup01.blob.core.windows.net/backups/database_name.bak'
    WITH CREDENTIAL='myAzureCredential' , STATS = 5;

     
    Prior to running this code, be sure to replace XXXbackup01 with the name of your Windows Azure Storage Account and replace database_name with the name of your database.
     
    Upon successful execution of the backup, you should see SQL Query result messages similar to the following:
     
    image
    Successful Backup Results

What about restoring?

Restoring from the cloud is just as easy as backing up … to restore we can use the following Transact-SQL syntax:

RESTORE DATABASE database_name FROM
URL='https://XXXbackup01.blob.core.windows.net/backups/database_name.bak'
WITH CREDENTIAL=’myAzureCredential’, STATS = 5, REPLACE

 

Thoughts? Comments? Feedback?

What are your thoughts around leveraging the cloud for backup storage? Feel free to post your comments, questions and feedback below.

-Keith