首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

SQL Server 備份至 Azure Blob 儲存體:原理、優勢與 T-SQL 實作全指南

     編輯:關於SqlServer

為何選擇 Azure Blob 做備份目標?

  • 彈性無限儲存:按用量付費、異地複寫 (GRS/RA-GRS) 災難復原
  • 零硬體維運:無磁帶/磁碟管理、Microsoft SLA 保障持久性
  • 突破 VM 磁碟限制:Azure VM 僅支援 16 個資料磁碟,Blob 無此限制
  • 跨環境還原:內部部署 ↔ Azure VM 雙向還原,無附加/分離 VHD 步驟
  • 成本效益:冷存取層 (Cool/Archive) 降低長期存檔成本

運作原理:虛擬備份裝置 (VDI)

  1. SQL Server 引擎將 Blob URL 視為**虛擬備份裝置** (類似磁帶/磁碟)
  2. 透過 **Microsoft Virtual Backup Device Interface (VDI)** 客戶端程序傳輸資料流
  3. 備份/還原指令語法與傳統磁碟完全一致,僅將 `TO DISK` 改為 `TO URL`

前置作業

  1. 建立 Azure 儲存體帳戶 (General Purpose v2 建議)
  2. 建立容器 (Container) 存放備份檔
  3. 取得儲存體帳戶名稱與存取金鑰 (或 SAS Token)
  4. 在 SQL Server 建立 **Credential** 儲存驗證資訊

T-SQL 完整實作範例

1. 建立 Credential


CREATE CREDENTIAL [https://mystorage.blob.core.windows.net/backups]
WITH IDENTITY = 'SHARED ACCESS SIGNATURE',
SECRET = 'sv=2020-08-04&ss=b&srt=co&sp=rwdlacx&se=2025-01-01T00:00:00Z&st=2024-01-01T00:00:00Z&spr=https&sig=xxxx';
-- 或使用帳戶金鑰 (不建議生產環境)
-- CREATE CREDENTIAL ... WITH IDENTITY = 'mystorage', SECRET = 'account_key';

2. 完整資料庫備份


BACKUP DATABASE AdventureWorks2019
TO URL = 'https://mystorage.blob.core.windows.net/backups/AdventureWorks2019_Full_20240115.bak'
WITH 
    CREDENTIAL = 'https://mystorage.blob.core.windows.net/backups',
    COMPRESSION,           -- 壓縮減少傳輸/儲存
    CHECKSUM,              -- 頁面校驗和
    STATS = 5;             -- 進度報告

3. 差異/記錄備份 (配合排程)


-- 差異
BACKUP DATABASE AdventureWorks2019
TO URL = '.../AdventureWorks2019_Diff_20240115_1200.bak'
WITH DIFFERENTIAL, CREDENTIAL = '...', COMPRESSION;

-- 交易記錄 (需 FULL/BULK_LOGGED 復原模式)
BACKUP LOG AdventureWorks2019
TO URL = '.../AdventureWorks2019_Log_20240115_1215.trn'
WITH CREDENTIAL = '...', COMPRESSION;

4. 還原資料庫


RESTORE DATABASE AdventureWorks2019
FROM URL = 'https://mystorage.blob.core.windows.net/backups/AdventureWorks2019_Full_20240115.bak'
WITH 
    CREDENTIAL = 'https://mystorage.blob.core.windows.net/backups',
    MOVE 'AdventureWorks2019' TO 'D:\Data\AdventureWorks2019.mdf',
    MOVE 'AdventureWorks2019_Log' TO 'L:\Log\AdventureWorks2019_Log.ldf',
    REPLACE, STATS = 5;

限制與注意事項

  • 單一備份檔最大 **195 GB** (分條備份可突破,`TO URL='...1.bak', '...2.bak'`)
  • 需 SQL Server 2012 SP1 CU2+ / 2014+ / 2016+ / 2017+ / 2019+
  • 網路頻寬直接影響備份/還原速度,建議 Azure ExpressRoute 或 VPN
  • Blob 儲存體防火牆需允許 SQL Server 來源 IP
  • 不支援 `MIRROR TO`、`ENCRYPTION` (SQL 2014+ 支援備份加密,需金鑰管理)

自動化排程建議


-- SQL Server Agent 作業步驟
-- 完整備份:每日 02:00
-- 差異備份:每 6 小時
-- 記錄備份:每 15 分鐘
-- 保留策略:配合 Blob 生命週期管理規則自動轉冷/刪除

成本估算參考

  • 熱存取層:~$0.0184/GB/月
  • 冷存取層:~$0.01/GB/月 (最小 30 天)
  • 封存層:~$0.0018/GB/月 (最小 180 天)
  • 寫入操作:~$0.05/10,000 次
  • 輸出流量:依區域階梯定價

使用 Azure Pricing Calculator 精確估算。

SQL Server 原生備份至 Azure Blob 以標準 T-SQL、VDI 架構、企業級安全性,為混合雲與雲原生部署提供零代碼變更的資料保護方案。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved