適用於:
Azure SQL 資料庫
您可以使用 Azure SQL Database 來設定長期備份保留 (LTR) 原則,在個別 Azure Blob 儲存體容器中自動保留最多 10 年的備份。 然後,您可以使用 Azure 入口網站、Azure CLI 或 PowerShell 來復原資料庫。
必要條件
備妥環境以使用 PowerShell。
注意
本文使用 Azure Az PowerShell 模組,這是與 Azure 互動時建議使用的 PowerShell 模組。 若要開始使用 Az PowerShell 模組,請參閱安裝 Azure PowerShell。 若要瞭解如何遷移至 Az PowerShell 模組,請參閱將 Azure PowerShell 從 AzureRM 遷移至 Az。
重要
PowerShell Azure Resource Manager (AzureRM) 模組已於 2024 年 2 月 29 日淘汰。 所有未來的開發都應該使用 Az.Sql 模組。 建議使用者從 AzureRM 遷移至 Az PowerShell 模組,以確保持續支援和更新。 不再維護或支援 AzureRM 模組。 Az PowerShell 模組和 AzureRM 模組中命令的自變數基本上完全相同。 如需相容性的詳細資訊,請參閱 新 Az PowerShell 模組簡介。
針對 Get-AzSqlDatabaseLongTermRetentionBackup
和 Restore-AzSqlDatabase
,您必須是下列其中一個角色的成員:
針對 Remove-AzSqlDatabaseLongTermRetentionBackup
,您需要是下列其中一個角色的成員:
權限
若要檢視及還原 LTR 備份,您需要:
若要刪除 LTR 備份,您需要是下列其中一個角色的成員:
注意
SQL Server 參與者角色沒有刪除 LTR 備份的權限。
可授與「訂閱」或「資源群組」範圍的 Azure 角色型存取控制 (RBAC) 權限。 不過,若要存取屬於已卸載伺服器的 LTR 備份,則必須在該伺服器的「訂用帳戶」範圍授與權限:
Microsoft.Sql/locations/longTermRetentionServers/longTermRetentionDatabases/longTermRetentionBackups/delete
建立長期保留原則
您可以將 Azure SQL Database 設定為保留自動備份的期間比您服務層級的保留期限還要長。
在 Azure 入口網站中,瀏覽至您的伺服器,然後選取 [備份]。 選取 [保留原則] 索引標籤以修改您的備份保留設定。
在 [保留原則] 索引標籤上,選取您要設定或修改長期備份保留原則的資料庫。 未選取的資料庫將不會受到影響。
在 [設定原則] 窗格中,指定您所需的保留期間為每週、每月或每年備份。 選擇保留期間 '0',表示不應設定長期備份保留。
選取 [套用],將所選擇的保留設定套用至所有選取的資料庫。
重要
當您啟用長期備份保留原則時,最多可能需要 7 天的時間,第一個備份才會變成可見且可供還原。 如需 LTR 備份頻率的詳細資訊,請參閱長期備份保留。
執行 az sql db ltr-policy set 命令來建立 LTR 原則。 下列範例會將長期保留原則設定為 12 週進行每週備份。
az sql db ltr-policy set \
--resource-group mygroup \
--server myserver \
--name mydb \
--weekly-retention "P12W"
此範例會將保留原則設定為 12 週進行每週備份、5 年進行每年備份,以及在 4 月 15 日的第一週進行每年 LTR 備份。
az sql db ltr-policy set \
--resource-group mygroup \
--server myserver \
--name mydb \
--weekly-retention "P12W" \
--yearly-retention "P5Y" \
--week-of-year 16
# get the SQL server
$subId = "<subscriptionId>"
$serverName = "<serverName>"
$resourceGroup = "<resourceGroupName>"
$dbName = "<databaseName>"
Connect-AzAccount
Select-AzSubscription -SubscriptionId $subId
$server = Get-AzSqlServer -ServerName $serverName -ResourceGroupName $resourceGroup
# create LTR policy with WeeklyRetention = 12 weeks. MonthlyRetention and YearlyRetention = 0 by default.
Set-AzSqlDatabaseBackupLongTermRetentionPolicy -ServerName $serverName -DatabaseName $dbName `
-ResourceGroupName $resourceGroup -WeeklyRetention P12W
# create LTR policy with WeeklyRetention = 12 weeks, YearlyRetention = 5 years and WeekOfYear = 16 (week of April 15). MonthlyRetention = 0 by default.
Set-AzSqlDatabaseBackupLongTermRetentionPolicy -ServerName $serverName -DatabaseName $dbName `
-ResourceGroupName $resourceGroup -WeeklyRetention P12W -YearlyRetention P5Y -WeekOfYear 16
檢視備份及從備份還原
檢視使用 LTR 原則針對特定資料庫保留的備份,然後從這些備份還原。
注意
如果邏輯伺服器已刪除,請使用 Azure CLI 或 PowerShell 命令來檢視及還原 LTR 備份。
在 Azure 入口網站中,瀏覽至您的伺服器,然後選取 [備份]。 若要檢視特定資料庫的可用 LTR 備份,請選取 [可用的 LTR 備份] 欄下的 [管理]。 這會隨即出現一個窗格,其中列出所選資料庫的可用 LTR 備份。
在出現的 [可用的 LTR 備份] 窗格中,檢閱可用的備份。 選取從中還原的備份。
若要從可用的 LTR 備份還原,請選取您要從中還原的備份,然後選取 [還原]。
選擇新資料庫的名稱,然後選取 [檢閱 + 建立] 以檢閱還原的詳細資料。 選取 [建立] 以從所選擇的備份還原您的資料庫。
在工具列上,選取通知圖示以檢視還原作業的狀態。
完成還原作業之後,開啟 [SQL Database] 頁面,以檢視剛還原的資料庫。
檢視 LTR 原則
執行 az sql db ltr-policy show 命令來檢視您伺服器上單一資料庫的 LTR 原則。
az sql db ltr-policy show \
--resource-group mygroup \
--server myserver \
--name mydb
檢視 LTR 備份
使用 az sql db ltr-backup list 命令來列出資料庫的 LTR 備份。 您可以使用此命令來尋找 name
參數,以用於其他命令。
az sql db ltr-backup list \
--location eastus2 \
--server myserver \
--database mydb
從 LTR 備份還原
執行 az sql db ltr-backup restore 命令來從 LTR 備份還原您的資料庫。 您可以執行 az sql db ltr-backup show 來取得 backup-id
。
使用命令 `az sql db ltr-backup show' 來建立 backup-id
的變數,以供日後使用。
get_backup_id=$(az sql db ltr-backup show
--location eastus2 \
--server myserver \
--database mydb \
--name "3214b3fb-fba9-43e7-96a3-09e35ffcb336;132292152080000000" \
--query 'id' \
--output tsv)
從 LTR 備份還原您的資料庫。
az sql db ltr-backup restore \
--dest-database targetdb \
--dest-server myserver \
--dest-resource-group mygroup \
--backup-id $get_backup_id
重要
若要在刪除伺服器或資源群組之後從 LTR 備份還原,您必須具有伺服器訂閱範圍的權限,而且該訂閱必須處於作用中狀態。 您也必須省略選擇性的 -ResourceGroupName 參數。
注意
從這裡,您可以使用 SQL Server Management Studio 連線到已還原的資料庫來執行所需的工作,例如資料庫交換。 請參閱還原時間點。
檢視 LTR 原則
此範例示範如何列出伺服器內的 LTR 原則。
# get all LTR policies within a server
$ltrPolicies = Get-AzSqlDatabase -ResourceGroupName $resourceGroup -ServerName $serverName | `
Get-AzSqlDatabaseLongTermRetentionPolicy
# get the LTR policy of a specific database
$ltrPolicies = Get-AzSqlDatabaseBackupLongTermRetentionPolicy -ServerName $serverName -DatabaseName $dbName `
-ResourceGroupName $resourceGroup
清除 LTR 原則
此範例示範如何清除資料庫中的 LTR 原則。
Set-AzSqlDatabaseBackupLongTermRetentionPolicy -ServerName $serverName -DatabaseName $dbName `
-ResourceGroupName $resourceGroup -RemovePolicy
檢視 LTR 備份
此範例示範如何列出伺服器內的 LTR 備份。
# get the list of all LTR backups in a specific Azure region
# backups are grouped by the logical database id, within each group they are ordered by the timestamp, the earliest backup first
$ltrBackups = Get-AzSqlDatabaseLongTermRetentionBackup -Location $server.Location
# get the list of LTR backups from the Azure region under the named server
$ltrBackups = Get-AzSqlDatabaseLongTermRetentionBackup -Location $server.Location -ServerName $serverName
# get the LTR backups for a specific database from the Azure region under the named server
$ltrBackups = Get-AzSqlDatabaseLongTermRetentionBackup -Location $server.Location -ServerName $serverName -DatabaseName $dbName
# list LTR backups only from live databases (you have option to choose All/Live/Deleted)
$ltrBackups = Get-AzSqlDatabaseLongTermRetentionBackup -Location $server.Location -DatabaseState Live
# only list the latest LTR backup for each database
$ltrBackups = Get-AzSqlDatabaseLongTermRetentionBackup -Location $server.Location -ServerName $serverName -OnlyLatestPerDatabase
從 LTR 備份還原
此範例示範如何從 LTR 備份還原。 請注意,這個介面並未變更,但資源識別碼參數現在需要 LTR 備份資源識別碼。
# restore a specific LTR backup as an P1 database on the server $serverName of the resource group $resourceGroup
Restore-AzSqlDatabase -FromLongTermRetentionBackup -ResourceId $ltrBackup.ResourceId -ServerName $serverName -ResourceGroupName $resourceGroup `
-TargetDatabaseName $dbName -ServiceObjectiveName P1
重要
- 若要在刪除伺服器或資源群組之後從 LTR 備份還原,您必須具有伺服器訂閱範圍的權限,而且該訂閱必須處於作用中狀態。 您也必須省略選擇性的
-ResourceGroupName
參數。
- 如果您是為了符合合規性或其他任務關鍵性需求而使用 LTR 備份,請考慮進行定期復原演練,以確認可以還原 LTR 備份,而且還原會產生預期的資料庫狀態。
注意
從這裡開始,您可以使用 SQL Server Management Studio 連線到已還原的資料庫來執行所需的工作,例如從還原的資料庫擷取一堆資料來複製到現有的資料庫,或刪除現有的資料庫,並將還原的資料庫重新命名為現有的資料庫名稱。 請參閱還原時間點。
刪除 LTR 備份
刪除針對具有 LTR 原則的特定資料庫所保留的備份。
重要
刪除 LTR 備份,便無法回復。 若要在刪除伺服器後刪除 LTR 備份,您必須有訂用帳戶範圍權限。 在 Azure 監視器中,您可以藉由篩選「刪除長期保留備份」作業,來設定每項刪除的通知。 活動記錄包含提出要求的人員和時間資訊。 如需詳細指示,請參閱建立活動記錄警示。
- 在 Azure 入口網站中,瀏覽至您的 Azure SQL 資料庫邏輯伺服器。
- 選取 [備份]。 若要檢視特定資料庫的可用 LTR 備份,請選取 [可用的 LTR 備份] 欄下的 [管理]。 這會隨即出現一個窗格,其中列出所選資料庫的可用 LTR 備份。
- 在出現的 [可用的 LTR 備份] 窗格中,檢閱可用的備份。 選取待刪除的備份。 選取 [刪除]。
此範例示範如何刪除備份清單中的 LTR 備份。
- 使用 檢視 LTR 備份來識別備份。
- 使用
Remove-AzSqlDatabaseLongTermRetentionBackup
來刪除備份。
# remove the earliest backup
$ltrBackup = $ltrBackups[0]
Remove-AzSqlDatabaseLongTermRetentionBackup -ResourceId $ltrBackup.ResourceId
最佳作法
如果您是為了符合合規性或其他任務關鍵性需求而使用 LTR 備份:
- 依照檢視備份一節中所述的步驟,使用入口網站、Azure CLI 或 PowerShell 確認 LTR 備份有遵循設定的原則。
- 請考慮進行定期復原演練,以確認 LTR 備份的還原會產生預期的資料庫狀態。
相關內容