本文將介紹如何利用 SQL Server 2012 備份資料庫到 Windows Azure Blob Storage。
情境描述
SQL Server 2012 SP1 累積更新套件 2(Cumulative Update 2)讓 SQL Server 2012 跟 Windows Azure 的關係更加密切,當您安裝了 CU 2 之後,就可以把 Windows Azure Blob Storage 當作您的備份媒體,利用簡單的 T-SQL 或 SMO 就可以將資料庫備份到雲端,而且 Windows Azure 輸入(inbound)所使用的頻寬完全免費,還沒訂閱 Windows Azure 的朋友可以立刻到 Windows Azure 官網申請免費試用 90 天,才可以自己動手實作下一節的內容。
實作步驟
筆者假設您已經訂閱 Windows Azure 服務,您可以在 Windows Azure 管理入口網站,點選【STORAGE > CREATE A STORAGE ACCOUNT】。
輸入URL名稱後管理入口網站會檢查該名稱是否唯一,接著選擇您要使用哪一個區域的資料中心以及您所要使用的訂閱項目,然後按 CREATE STORAGE ACCOUNT。
接著便會開始建立您的 STORAGE,此時的 STATUS 應該會是處於 Creating,表示 STORAGE 尚未建立完成。
當 STATUS 變成 Online,表示您的 STORAGE 已經建立成功。
然後您必須建立 STORAGE 的 CONTAINER,簡單來講就是建立一個用來存放檔案的資料夾,您可以點選剛剛建立的 STORAGE ACCOUNT。
在 STORAGE ACCOUNT 首頁上點選【CONTAINERS > CREATE A BLOB CONTAINER】。
輸入 Container 的名稱及選擇 ACCESS 存取範圍,預設 Private 表示只有 STORAGE ACCOUNT 的擁有者可以存取。
建立完成之後您可以看到這個 Container 的 URL,這是後續用來備份資料庫所會用到的網址,至此您就完成將 SQL Server 2012 資料庫備份到 Windows Azure Storage 的第一步。接著您必須先安裝SQL Server 2012 Service Pack 1 的累積更新套件 2,安裝完畢之後第二步便是利用下列的 T-SQL 建立憑證。
CREATE CREDENTIAL mycredential
WITH IDENTITY= 'mystorageaccount'
, SECRET = '<storage account access key>'
其中 IDENTITY 和 SECRET 所需的資訊藏在 Windows Azure 管理入口網站,您可以在第一個步驟所建立之 STORAGE ACCOUNT 中點選【MANAGE KEYS】。其中【STORAGE ACCOUNT NAME】 就是 IDENTITY 所要填寫的內容,【PRIMARY ACCESS KEY】或【SECONDARY ACCESS KEY】就是 SECRET 所對應的值,您可以點選 圖示來複製您所要的資訊,以避免輸入錯誤而造成後續動作失敗,或是您也可以按下 regenerate 來重新產生 ACCESS KEY。
因此,以筆者的範例而言,就可以利用下列的 T-SQL 建立憑證:
CREATE CREDENTIAL mycredential
WITH IDENTITY= 'sql2k12sp1'
, SECRET = 'HaUV4+maQe2OjHkR3UKo0ZEMmg/QMaaYo7DLppCGpwf/vfCXUN3r/WAmfUDB5tYUsKAN/aKuvtyetCic27Yn1g=='
第三步驟就可以開始進行備份作業,您可以利用您熟悉的 BACKUP DATABAE 來備份資料庫,只是差別在於將習慣的 TO DISK 改為 TO URL,而 URL 位址您可以點選步驟一所建立 Container URL,以及您必須搭配步驟二所建立的 STORAGE ACCOUNT 憑證指令碼如下:
BACKUP DATABASE pubs
TO URL = 'http://sql2k12sp1.blob.core.windows.net/mycontainer/pubs.bak'
WITH CREDENTIAL = 'mycredential'
GO
第四步驟假設我們利用下列 T-SQL 指令碼來刪除 sales 資料表:
DROP TABLE pubs.dbo.sales
GO
執行完畢之後您在物件總管中便看不到 sales 資料表。
最後筆者要在步驟五示範從 Blobs 中還原您的 SQL Server 上的資料庫,指令碼一樣是使用您熟悉的 RESTORE DATABASE,只是差別在於將習慣的 FROM DISK 改為 FROM URL,而 URL 的部分參考步驟一,另外您也必須指定 STORAGE ACCOUNT 的憑證,指令碼如下:
RESTORE DATABASE pubs
FROM URL = 'http://sql2k12sp1.blob.core.windows.net/mycontainer/pubs.bak'
WITH CREDENTIAL = 'mycredential',REPLACE
GO
本文所使用的完整 T-SQL 指令碼如下:
--步驟一、建立 STORAGE ACCOUNT
--步驟二、建立憑證
CREATE CREDENTIAL mycredential
WITH IDENTITY= 'sql2k12sp1'
, SECRET = 'HaUV4+maQe2OjHkR3UKo0ZEMmg/QMaaYo7DLppCGpwf/vfCXUN3r/WAmfUDB5tYUsKAN/aKuvtyetCic27Yn1g=='
GO
--步驟三、備份資料庫到 Blobs
BACKUP DATABASE pubs
TO URL = 'http://sql2k12sp1.blob.core.windows.net/mycontainer/pubs.bak'
WITH CREDENTIAL = 'mycredential'
GO
--步驟四、刪除 sales 資料表
DROP TABLE pubs.dbo.sales
GO
--步驟五、還原資料庫
RESTORE DATABASE pubs
FROM URL = 'http://sql2k12sp1.blob.core.windows.net/mycontainer/pubs.bak'
WITH CREDENTIAL = 'mycredential',REPLACE
GO
參考資料
- SQL Server Backup and Restore to Cloud Simplified
- Cumulative Update #2 for SQL Server 2012 Service Pack 1
- SQL Server 2012 Service Pack 1 的累積更新套件 2
- Windows Azure pricing calculator
- SQL Server Backup and Restore with Windows Azure Blob Storage Service
- Tutorial: Getting Started with SQL Server Backup and Restore to Windows Azure Blob Storage Service