適用於:SQL Server
Azure SQL 受控執行個體
本文介紹使用 Azure Blob 記憶體作為備份目的地所需的概念、需求和元件。 使用 或 DISK時TAPE,備份與還原功能相同或類似,但有一些差異。 本文包含這些差異和一些程式碼範例。
Tip
從 SQL Server 2025(17.x)開始,你可以使用受管理的身分將備份儲存到 URL。 檢閱 使用受控識別備份至 URL(預覽版) - 由 Azure Arc 啟用的 SQL Server。
Overview
SQL Server 2012 Service Pack 1 CU2 和 SQL Server 2014 引進了備份至 URL (指向 Azure Blob 儲存體) 的功能,使用熟悉的 T-SQL 語法安全地將備份寫入 Azure 儲存體。 SQL Server 2016 (13.x) 透過共用存取簽章 (SAS) 金鑰引進 File-Snapshot Azure 中資料庫檔案的備份 和安全性,這是向 Azure 記憶體安全策略驗證憑證的安全且簡單方式。
請務必瞭解元件及其之間的互動,以執行 Azure Blob 記憶體的備份或還原。
在您的 Azure 訂用帳戶內建立 Azure 儲存體帳戶是這個程序的第一個步驟。 這個儲存體帳戶是系統管理帳戶,有以儲存體帳戶建立之所有容器和物件的完整系統管理權限。 SQL Server 可以使用 Azure 記憶體帳戶名稱和其存取金鑰值來驗證和寫入和讀取 Blob 至 Azure Blob 記憶體,或使用在特定容器上產生的共用存取簽章令牌來授與讀取和寫入許可權。 如需 Azure 儲存體帳戶的詳細資訊,請參閱關於 Azure 儲存體帳戶,如需共用存取簽章的詳細資訊,請參閱共用存取簽章,第 1 部分:了解 SAS 模型。 SQL Server 認證儲存此驗證資訊後,會在備份或還原作業期間使用。
Azure 儲存體和 S3 相容的儲存體
SQL Server 2022 (16.x) 引進了將備份寫入 S3 相容物件儲存體的功能,其備份和還原功能在概念上類似於「備份至 URL」功能,後者是將 Azure Blob 儲存體做為備份裝置類型。 SQL Server 2022 (16.x) 使用 REST API 新增對新 S3 連接器的支援,藉此擴充BACKUP/RESTORE TO/FROM URL語法。
本文包含使用 Azure Blob 儲存體的「備份至 URL」相關資訊。 若要深入瞭解如何針對 S3 相容記憶體使用備份至 URL,請參閱 SQL Server 備份至 S3 相容物件記憶體的 URL。
備份至 Azure 儲存體區塊 Blob 與分頁 Blob
Azure Blob 儲存體可以儲存的 Blob 類型有兩種:區塊和分頁 Blob。 若為 SQL Server 2016 和更新版本,建議使用區塊 Blob。
如果在憑證中使用存儲金鑰,會使用分頁 Blob,而使用共用存取簽章時,則會使用區塊 Blob。
備份至區塊 Blob 僅適用於 SQL Server 2016 或更新版本,以便備份至 Azure Blob 儲存體。 如果您要執行 SQL Server 2016 或更新版本,請備份至區塊 Blob,而不是分頁 Blob。
主要的原因如下:
- 相較於儲存體金鑰,共用存取簽章是授權 Blob 存取更安全的方式。
- 您可以備份至多個區塊 Blob,以取得更佳的備份及還原效能,並支援更大的資料庫備份。
- 區塊 Blob 比 分頁 Blob 便宜。
- 需要透過代理伺服器備份至 Page Blob 的客戶必須使用
backuptourl.exe。
將大型資料庫備份到 Azure Blob 儲存體所受的限制列於:Azure SQL 受控執行個體 T-SQL 差異、限制和已知問題。
若資料庫太大,請執行以下其中一項操作:
- 使用備份壓縮或
- 備份至多個區塊 Blob
支援 Linux、容器和由 Azure Arc 啟用的 SQL 受控執行個體
如果 SQL Server 執行個體裝載在 Linux 上,包括:
- 獨立作業系統
- 容器
- 由 Azure Arc 啟用的 SQL 受控執行個體
- 任何其他以 Linux 為基礎的環境
唯一支援的「備份至 Azure Blob 儲存體 URL」,是使用共用存取簽章備份至區塊 Blob。
Azure Blob 儲存體
記憶體帳戶: 記憶體帳戶是所有記憶體服務的起點。 若要存取 Azure Blob 記憶體,請先建立 Azure 記憶體帳戶。 如需詳細資訊,請參閱 建立儲存體帳戶。
容器: 容器會提供一組 Blob 的群組,而且可以儲存不限數量的 Blob。 若要將 SQL Server 備份寫入 Azure Blob 儲存體,您必須至少建立根容器。 您可以針對容器產生共用存取簽章 Token,並僅對特定容器的物件授與存取權。
Blob: 任何類型和大小的檔案。 Azure Blob 儲存體可以儲存的 Blob 類型有兩種:區塊和分頁 Blob。 SQL Server 備份可以使用這兩種 Blob 類型,視所使用的 Transact-SQL 語法而定。 您可以使用下列 URL 格式來定址 Blob:https://<儲存體帳戶>.blob.core.windows.net/<容器>/<Blob>。 若要 Azure Blob 儲存體的詳細資訊,請參閱 Azure Blob 儲存體簡介。 如需分頁 Blob 的詳細資訊,請參閱 了解區塊 Blob、附加 Blob 和分頁 Blob。
Azure 快照集: 在某個時間點拍攝的 Azure Blob 快照集。 如需詳細資訊,請參閱 建立 Blob 的快照集。 SQL Server 備份現在支援以下項目:儲存在 Azure Blob 儲存體中的資料庫檔案 Azure 快照集備份。 如需詳細資訊,請參閱 Azure 中資料庫檔案的檔案快照集備份。
SQL Server 元件
URL: URL 會指定唯一備份文件的統一資源識別碼 (URI)。 URL 用來提供 SQL Server 備份檔的位置和名稱。 此 URL 必須指向實際的 Blob,而非只有容器。 如果 Blob 不存在,則會建立它。 如果指定了現有的 Blob, BACKUP 除非 WITH FORMAT 指定 選項來覆寫 Blob 中現有的備份文件,否則會失敗。
以下是範例 URL 值: https://ACCOUNTNAME.blob.core.windows.net/<CONTAINER>/FILENAME.bak。
Note
不支援使用 HTTP 備份至 URL。
憑據: SQL Server 認證是用來儲存連線到 SQL Server 外部資源所需的驗證信息的物件。 SQL Server 備份和還原程序會在此使用認證,以向 Azure Blob 儲存體、其容器和 Blob 物件進行驗證。 認證會儲存記憶體帳戶的名稱和記憶體帳戶 存取金鑰 值,或容器 URL 及其共用存取簽章令牌。 建立認證之後,語句的 BACKUP/RESTORE 語法會決定 Blob 的類型和所需的認證。
如需如何建立共用存取簽章的範例,請在稍後參閱本文的建立共用存取簽章範例;若要建立 SQL Server 認證,請在稍後參閱本文的建立認證範例。
如需認證的詳細資訊,請參閱 認證(Database Engine) 。
如需使用認證之其他範例的資訊,請參閱 建立 SQL Server Agent Proxy。
Azure 不可變更存儲支援
SQL Server 2025(17.x)新增了對 Azure 不可變儲存的支援,可防範勒索軟體攻擊。 寫入不可變記憶體的檔案無法修改或刪除,如不變性所定義。
一般而言,SQL Server 備份會以兩個步驟建立。 一開始, .bak 備份檔會以零建立,然後以數據更新檔案。 由於一旦寫入並認可檔案,就不允許在固定記憶體上進行檔案修改,因此備份程式現在會略過初始步驟,以零建立備份檔。 相反地,寫入區塊 Blob 時,會在一個步驟中建立整個備份。
若要使用 SQL Server 2025 (17.x) 的不可變儲存來備份至 URL,請遵循以下步驟:
發出 BACKUP 以將資料庫備份至 Azure 儲存體容器。 如果您在不可變儲存體上使用
WITH FORMAT選項,且已存在具有相同名稱的備份,則會收到錯誤,且備份會失敗。BACKUP DATABASE [<Database>] TO URL = '<url>';
Azure Blob 儲存體的安全性
以下是備份至 Azure Blob 儲存體,或從中還原時的安全性考量和需求。
建立 Azure Blob 記憶體的容器時,建議您設定 私人的存取權。 將存取權設定為 [私用] 可限制只有能夠提供必要資訊向 Azure 帳戶驗證的使用者或帳戶,才有存取權。
Important
SQL Server 要求 Azure 帳戶名稱和存取金鑰驗證或共用存取簽章和存取令牌會儲存在 SQL Server 認證中。 在執行備份或還原作業時,系統會使用此資訊向該 Azure 帳戶驗證。
Warning
Azure 記憶體支援 停用 記憶體帳戶的共用密鑰授權。 如果停用共用密鑰授權,SQL Server 備份至 URL 將無法運作。
用來發出
BACKUP或RESTORE命令的用戶帳戶應該位於具有 Alter any credential 許可權的db_backup操作員資料庫角色中。
Azure Blob 儲存體的備份/還原限制
SQL Server 會將使用分頁 Blob 支援的備份大小上限限制為 1 TB。 使用區塊 Blob 支援的備份大小上限限制為大約 200 GB(50,000 個區塊 * 4 MB
MAXTRANSFERSIZE)。 區塊 Blob 支援等量分割,以支援相對較大的備份大小 - 限制為最多 64 個 URL,這會產生下列公式:64 stripes * 50,000 blocks * 4MB maxtransfersize = 12.8 TB。Important
雖然單一區塊 Blob 支援的備份大小上限為 200 GB,但 SQL Server 可能會在較小的區塊中進行寫入,進而導致 SQL Server 在備份完整傳輸之前達到 50,000 的區塊限制。 等量備份 (即使小於 200 GB) 可避免達到區塊限制,特別是當使用差異備份或未壓縮的備份時。
您可以使用 Transact-SQL、SMO、PowerShell Cmdlet 或 SQL Server Management Studio 備份或還原精靈來發出備份或還原語句。
備份至 Azure 儲存體帳戶時,SQL Server 僅支援使用共用存取簽章 (SAS) 權杖或儲存體帳戶金鑰進行驗證。 不支援所有其他驗證方法,包括使用 Microsoft Entra ID (先前稱為 Azure Active Directory) 的驗證。
不支援建立邏輯裝置名稱。 因此不支援使用
sp_dumpdevice或透過 SQL Server Management Studio 將 URL 新增為備份裝置。不支援附加至現有的備份 Blob。 只有使用
WITH FORMAT選項才能覆寫已有的 Blob 備份。 不過,當使用檔案快照備份時(使用WITH FILE_SNAPSHOT參數),不允許使用WITH FORMAT參數,以避免遺留由原始檔案快照備份創建的孤立檔案快照。只有使用區塊 Blob 和使用共用存取簽章 (SAS) Token 才支援備份至單一備份作業中的多個 Blob,而不是 SQL 認證的儲存體帳戶金鑰。
不支援為分頁 Blob 指定
BLOCKSIZE。MAXTRANSFERSIZE的指定不受頁面 Blob 支援。指定備份集選項 -
RETAINDAYS且EXPIREDATE不受支援。SQL Server 的備份裝置名稱大小上限為 259 個字元。 會
BACKUP TO URL針對用來指定 URLhttps://.blob.core.windows.net//.bak的必要元素耗用 36 個字元,保留帳戶、容器和 Blob 名稱的 223 個字元。SQL Server 2019 (15.x) 和舊版對於共用存取簽章 (SAS) 令牌的限制為 256 個字元,這會限制可以使用的令牌類型(例如,不支援使用者委派密鑰令牌)。
如果您的伺服器透過 Proxy 伺服器存取 Azure,您必須使用追蹤旗標 1819,然後透過下列其中一個方法來設定 WinHTTP Proxy 設定:
- Windows XP 或 Windows Server 2003 和更早版本上的 proxycfg.exe 公用程式。
- Windows Vista 和 Windows Server 2008 或更新版本的 netsh.exe 公用程式。
不支援 Azure Blob 儲存體的不可變儲存。 將 [固定儲存 原則] 設定為 false。
進 階記憶體不支援備份至URL。
Azure Blob 記憶體中支援的自變數和語句
Azure Blob 儲存體 Backup/Restore 陳述式的支援
| 備份/還原語句 | Supported | Exceptions | Comments |
|---|---|---|---|
BACKUP |
Yes |
BLOCKSIZE 區塊 Blob 支援 和 MAXTRANSFERSIZE 。 頁面 Blob 不支援它們。 |
BACKUP 至區塊 Blob 需要儲存在 SQL Server 認證中的共用存取簽章。
BACKUP 對分頁 Blob 需要儲存在 SQL Server 認證中的記憶體帳戶密鑰,而且需要 WITH CREDENTIAL 指定 自變數。 |
RESTORE |
Yes | 需要定義 SQL Server 認證,而且 WITH CREDENTIAL 如果使用記憶體帳戶密鑰做為秘密定義 SQL Server 認證,則需要指定 自變數 |
|
RESTORE FILELISTONLY |
Yes | 需要定義 SQL Server 認證,而且 WITH CREDENTIAL 如果使用記憶體帳戶密鑰做為秘密定義 SQL Server 認證,則需要指定 自變數 |
|
RESTORE HEADERONLY |
Yes | 需要定義 SQL Server 認證,而且 WITH CREDENTIAL 如果使用記憶體帳戶密鑰做為秘密定義 SQL Server 認證,則需要指定 自變數 |
|
RESTORE LABELONLY |
Yes | 需要定義 SQL Server 認證,而且 WITH CREDENTIAL 如果使用記憶體帳戶密鑰做為秘密定義 SQL Server 認證,則需要指定 自變數 |
|
RESTORE VERIFYONLY |
Yes | 需要定義 SQL Server 認證,而且 WITH CREDENTIAL 如果使用記憶體帳戶密鑰做為秘密定義 SQL Server 認證,則需要指定 自變數 |
|
RESTORE REWINDONLY |
No |
如需備份語句的語法和一般資訊,請參閱 BACKUP。
如需還原語句的語法和一般資訊,請參閱 RESTORE 語句。
Azure Blob 儲存體中的 Backup 引數支援
| Argument | Supported | Exception | Comments |
|---|---|---|---|
DATABASE |
Yes | ||
LOG |
Yes | ||
TO (URL) |
Yes | 與和DISK不同TAPE,URL 不支援指定或建立邏輯名稱。 |
這個引數是用來指定備份檔案的 URL 路徑。 |
MIRROR TO |
Yes | ||
WITH 選項: |
|||
CREDENTIAL |
Yes |
WITH CREDENTIAL 只有在使用 BACKUP TO URL 選項備份至 Azure Blob 記憶體時才支援,而且只有在使用記憶體帳戶密鑰作為秘密定義 SQL Server 認證時,才支援 |
|
FILE_SNAPSHOT |
Yes | ||
ENCRYPTION |
Yes | 指定 WITH ENCRYPTION 參數時,SQL Server File-Snapshot Backup 可確保在進行備份之前,整個資料庫已經過 TDE 加密;如果是,則使用為資料庫上的 TDE 指定的演算法來加密檔案快照集備份檔本身。 如果整個資料庫中的所有數據未加密,備份就會失敗(例如,加密程式尚未完成)。 |
|
DIFFERENTIAL |
Yes | ||
COPY_ONLY |
Yes | ||
COMPRESSION|NO_COMPRESSION |
Yes | 不支援檔案快照備份 | |
DESCRIPTION |
Yes | ||
NAME |
Yes | ||
EXPIREDATE | RETAINDAYS |
No | ||
NOINIT | INIT |
No | 無法將資料附加至 Blob。 若要覆寫備份,請使用 WITH FORMAT 自變數。 不過,使用檔案快照備份(使用 WITH FILE_SNAPSHOT 引數)時,禁止使用 WITH FORMAT 引數,以避免留下與原始備份建立的孤立檔案快照。 |
|
NOSKIP | SKIP |
No | ||
NOFORMAT | FORMAT |
Yes | 若未指定 WITH FORMAT,則對現有 Blob 進行的備份會失敗。 當指定 WITH FORMAT 時,現有的 Blob 會被覆寫。 不過,當使用檔案快照備份時(使用 WITH FILE_SNAPSHOT 參數),不允許使用 FORMAT 參數,以避免遺留由原始檔案快照備份創建的孤立檔案快照。 不過,使用檔案快照備份(使用 WITH FILE_SNAPSHOT 引數)時,禁止使用 WITH FORMAT 引數,以避免留下與原始備份建立的孤立檔案快照。 |
|
MEDIADESCRIPTION |
Yes | ||
MEDIANAME |
Yes | ||
BLOCKSIZE |
Yes | 不支援用於分頁 Blob。 支援用於區塊 Blob。 | 建議 BLOCKSIZE=65536 使用區塊 Blob 中允許的 50,000 個區塊。 |
BUFFERCOUNT |
Yes | ||
MAXTRANSFERSIZE |
Yes | 不支援用於分頁 Blob。 支援用於區塊 Blob。 | 預設值為 1048576。 此值可以介於 65,536 個字節的增量中,最多 4 MB。 建議 MAXTRANSFERSIZE=4194304 使用區塊 Blob 中允許的 50,000 個區塊。 |
NO_CHECKSUM | CHECKSUM |
Yes | ||
STOP_ON_ERROR | CONTINUE_AFTER_ERROR |
Yes | ||
STATS |
Yes | ||
REWIND | NOREWIND |
No | ||
UNLOAD | NOUNLOAD |
No | ||
NORECOVERY | STANDBY |
Yes | ||
NO_TRUNCATE |
Yes |
如需備份自變數的詳細資訊,請參閱 BACKUP。
Azure Blob 儲存體中的 Restore 引數支援
| Argument | Supported | Exceptions | Comments |
|---|---|---|---|
DATABASE |
Yes | ||
LOG |
Yes | ||
FROM (URL) |
Yes | 自 FROM URL 變數用來指定備份檔的 URL 路徑。 |
|
WITH 選項: |
|||
CREDENTIAL |
Yes |
WITH CREDENTIAL 只有在使用 RESTORE FROM URL 選項從 Azure Blob 記憶體還原時才支援。 |
|
PARTIAL |
Yes | ||
RECOVERY | NORECOVERY | STANDBY |
Yes | ||
LOADHISTORY |
Yes | ||
MOVE |
Yes | ||
REPLACE |
Yes | ||
RESTART |
Yes | ||
RESTRICTED_USER |
Yes | ||
FILE |
No | ||
PASSWORD |
Yes | ||
MEDIANAME |
Yes | ||
MEDIAPASSWORD |
Yes | ||
BLOCKSIZE |
Yes | ||
BUFFERCOUNT |
No | ||
MAXTRANSFERSIZE |
No | ||
CHECKSUM | NO_CHECKSUM |
Yes | ||
STOP_ON_ERROR | CONTINUE_AFTER_ERROR |
Yes | ||
FILESTREAM |
Yes | 不支援快照備份 | |
STATS |
Yes | ||
REWIND | NOREWIND |
No | ||
UNLOAD | NOUNLOAD |
No | ||
KEEP_REPLICATION |
Yes | ||
KEEP_CDC |
Yes | ||
ENABLE_BROKER | ERROR_BROKER_CONVERSATIONS | NEW_BROKER |
Yes | ||
STOPAT | STOPATMARK | STOPBEFOREMARK |
Yes |
如需 Restore 自變數的詳細資訊,請參閱 RESTORE 語句 - 自變數。
使用 SSMS 備份
您可以在 SQL Server Management Studio 中使用 SQL Server 認證,透過備份工作將資料庫備份至 URL。
Note
若要建立 SQL Server 檔案快照集備份,或覆寫現有的媒體集,您必須使用 Transact-SQL、PowerShell 或 C#,而不是 SQL Server Management Studio 中的備份工作。
下列步驟說明如何在 SQL Server Management Studio 中對備份資料庫工作進行變更,以允許備份至 Azure 儲存體:
在物件總管中,連接到 SQL Server Database Engine 的實例,然後展開該實例。
展開 [資料庫],以滑鼠右鍵按兩下所需的資料庫,指向 [ 工作],然後選取 [ 備份...]。
在 [目的地] 區段中的 [一般] 頁面上,[備份至:] 下拉式清單中提供 URL 選項。 URL 選項可用來建立備份至 Azure 記憶體。 選取 [新增],然後開啟 [ 選取備份目的地 ] 對話框:
Azure 記憶體容器: 用來儲存備份檔的 Azure 記憶體容器名稱。 從下拉式清單中選取現有的容器,或手動輸入容器。
共用存取原則: 輸入手動輸入容器的共用存取簽章。 如果已選擇現有的容器,則無法使用此欄位。
備份檔: 備份檔的名稱。
新容器: 用來註冊您沒有共用存取簽章的現有容器。 請參閱連線到Microsoft Azure 訂用帳戶(備份至 URL)。
Note
Add 支援單一媒體集的多個備份檔和記憶體容器。
當您選取 [URL ] 作為目的地時, [媒體選項 ] 頁面中的某些選項會停用。 下列文章包含有關「備份資料庫」對話方塊的詳細資訊:
使用維護計劃備份
類似於先前所述的備份工作,SQL Server Management Studio 中的維護計劃精靈包含 URL 做為其中一個目的地選項,以及備份至 Azure 記憶體所需的其他支援物件,例如 SQL 認證。 如需詳細資訊,請參閱 Using Maintenance Plan Wizard 中的 Define Backup Tasks一節。
Note
若要使用共用存取權杖建立條帶式備份集、SQL Server 檔案快照備份或 SQL 認證,您必須使用 Transact-SQL、PowerShell 或 C#,而不是維護計劃精靈中的備份任務。
使用 SSMS 還原
還原資料庫工作包含 URL 作為要從中還原的裝置。 下列步驟說明使用還原工作,從 Azure Blob 儲存體進行還原︰
以滑鼠右鍵按一下 [資料庫] ,然後選取 [還原資料庫...] 。
在 [一般] 頁面上,選取 [來源] 區段下的 [裝置] 。
選取瀏覽 (...) 按鈕,開啟 [選取備份裝置] 對話方塊。
從 [備份媒體類型:] 下拉式列表中選取 [URL]。 選取 [新增 ] 以開啟 [ 選取備份檔位置 ] 對話框。
Azure 記憶體容器: 包含備份檔之 Azure 記憶體容器的完整名稱。 從下拉式清單中選取現有的容器,或手動輸入完整容器名稱。
共用存取簽章: 用來輸入指定容器的共用存取簽章。
加: 用來註冊您沒有共用存取簽章的現有容器。 請參閱連線到Microsoft Azure 訂用帳戶(備份至 URL)。
還行: SQL Server 會使用您提供的 SQL 認證資訊連線到 Azure 記憶體,並開啟 [ 在 azure Microsoft 中尋找備份檔 ] 對話框。 位於儲存體容器中的備份檔案,會顯示在此頁面上。 選取您要用來還原的檔案,然後選取 [ 確定]。 這會帶您回到 [ 選取備份裝置 ] 對話框,然後選取此對話方塊上的 [ 確定 ] 會帶您回到主要 [ 還原 ] 對話框,您可以在其中完成還原。
程式碼範例
本節包含下列範例。
Note
如需搭配 Azure Blob 記憶體使用 SQL Server 2016 的教學課程,請參閱 教學課程:搭配 SQL Server 使用 Azure Blob 記憶體
建立共用存取簽章
下列範例會建立共用存取簽章,可在新建立的容器上建立 SQL Server 認證。 此指令碼會建立關聯到預存存取原則的共用存取簽章。 如需詳細資訊,請參閱共用存取簽章,第 1 部分:了解 SAS 模型。 這個指令碼也會撰寫在 SQL Server 上建立認證所需的 T-SQL 命令。
Note
此範例需要 Azure PowerShell。 如需安裝和使用 Azure PowerShell 的相關信息,請參閱 如何安裝和設定 Azure PowerShell。 這些指令碼是使用 Azure PowerShell 5.1.15063 所驗證。
與預存存取原則相關聯的共用存取簽章
# Define global variables for the script
$prefixName = '<a prefix name>' # used as the prefix for the name for various objects
$subscriptionName = '<your subscription name>' # the name of subscription name you will use
$locationName = '<a data center location>' # the data center region you will use
$storageAccountName = $prefixName + 'storage' # the storage account name you will create or use
$containerName = $prefixName + 'container' # the storage container name to which you will attach the SAS policy with its SAS token
$policyName = $prefixName + 'policy' # the name of the SAS policy
# Set a variable for the name of the resource group you will create or use
$resourceGroupName = $prefixName + 'rg'
# adds an authenticated Azure account for use in the session
Connect-AzAccount
# set the tenant, subscription and environment for use in the rest of
Set-AzContext -SubscriptionName $subscriptionName
# create a new resource group - comment out this line to use an existing resource group
New-AzResourceGroup -Name $resourceGroupName -Location $locationName
# Create a new ARM storage account - comment out this line to use an existing ARM storage account
New-AzStorageAccount -Name $storageAccountName -ResourceGroupName $resourceGroupName -Type Standard_RAGRS -Location $locationName
# Get the access keys for the ARM storage account
$accountKeys = Get-AzStorageAccountKey -ResourceGroupName $resourceGroupName -Name $storageAccountName
# Create a new storage account context using an ARM storage account
$storageContext = New-AzStorageContext -StorageAccountName $storageAccountName -StorageAccountKey $accountKeys[0].value
# Creates a new container in Azure Blob Storage
$container = New-AzStorageContainer -Context $storageContext -Name $containerName
$cbc = $container.CloudBlobContainer
# Sets up a Stored Access Policy and a Shared Access Signature for the new container
$policy = New-AzStorageContainerStoredAccessPolicy -Container $containerName -Policy $policyName -Context $storageContext -ExpiryTime $(Get-Date).ToUniversalTime().AddYears(10) -Permission "rwld"
$sas = New-AzStorageContainerSASToken -Policy $policyName -Context $storageContext -Container $containerName
Write-Host 'Shared Access Signature= '$($sas.TrimStart('?'))''
# Outputs the Transact SQL to the clipboard and to the screen to create the credential using the Shared Access Signature
Write-Host 'Credential T-SQL'
$tSql = "CREATE CREDENTIAL [{0}] WITH IDENTITY='Shared Access Signature', SECRET='{1}'" -f $cbc.Uri, $sas.TrimStart('?')
$tSql | clip
Write-Host $tSql
成功執行指令碼之後,請將 CREATE CREDENTIAL 命令複製到查詢工具,再連線到 SQL Server 執行個體,然後執行命令以建立含共用存取簽章的認證。
建立認證
下列範例會建立 SQL Server 認證,以向 Azure Blob 儲存體進行驗證。 執行下列其中一項動作。
使用共用存取簽章
如果您已執行上述指令碼來建立共用存取簽章,請將
CREATE CREDENTIAL複製到已連線至 SQL Server 執行個體的查詢編輯器,然後再執行命令。下列為建立認證以使用共用存取簽章的 T-SQL 範例。
IF NOT EXISTS (SELECT * FROM sys.credentials WHERE name = 'https://<mystorageaccountname>.blob.core.windows.net/<mystorageaccountcontainername>') CREATE CREDENTIAL [https://<mystorageaccountname>.blob.core.windows.net/<mystorageaccountcontainername>] WITH IDENTITY = 'SHARED ACCESS SIGNATURE', SECRET = '<SAS_TOKEN>';使用儲存體帳戶的身分識別和存取金鑰
IF NOT EXISTS (SELECT * FROM sys.credentials WHERE name = '<mycredentialname>') CREATE CREDENTIAL [<mycredentialname>] WITH IDENTITY = '<mystorageaccountname>', SECRET = '<mystorageaccountaccesskey>';
執行完整的資料庫備份
下列範例會將 AdventureWorks2025 資料庫完整備份至 Azure Blob 儲存體。 使用下列其中一個範例:
至 URL,使用共用存取簽章
BACKUP DATABASE AdventureWorks2022 TO URL = 'https://<mystorageaccountname>.blob.core.windows.net/<mycontainername>/AdventureWorks2022.bak'; GO至 URL,使用儲存體帳戶的身分識別和存取金鑰
BACKUP DATABASE AdventureWorks2022 TO URL = 'https://<mystorageaccountname>.blob.core.windows.net/<mycontainername>/AdventureWorks2022.bak' WITH CREDENTIAL = '<mycredentialname>', COMPRESSION, STATS = 5; GO
使用 STOPAT 還原至時間點
下列範例會將 AdventureWorks2025 範例資料庫還原至某個時點狀態,並且顯示還原作業。
從 URL,使用共用存取簽章
RESTORE DATABASE AdventureWorks2022
FROM URL = 'https://<mystorageaccountname>.blob.core.windows.net/<mycontainername>/AdventureWorks2022_2015_05_18_16_00_00.bak'
WITH MOVE 'AdventureWorks2022_data' TO 'C:\Program Files\Microsoft SQL Server\<myinstancename>\MSSQL\DATA\AdventureWorks2022.mdf',
MOVE 'AdventureWorks2022_log' TO 'C:\Program Files\Microsoft SQL Server\<myinstancename>\MSSQL\DATA\AdventureWorks2022.ldf',
NORECOVERY, REPLACE, STATS = 5;
GO
RESTORE LOG AdventureWorks2022
FROM URL = 'https://<mystorageaccountname>.blob.core.windows.net/<mycontainername>/AdventureWorks2022_2015_05_18_18_00_00.trn'
WITH RECOVERY, STOPAT = 'May 18, 2015 5:35 PM';
GO