適用於:
Azure SQL 受控執行個體
在 Azure SQL 受控執行個體中,您可以設定長期備份保留原則 (LTR)。 此功能可自動將資料庫備份保留在不同的 Azure Blob 儲存體容器中,最長達 10 年。 然後,您可以使用這些備份搭配 Azure 入口網站、Azure CLI 和 PowerShell 來復原資料庫。
下列各節說明如何使用 Azure 入口網站、PowerShell 和 Azure CLI 設定長期備份保留、檢視 Azure SQL 儲存體中的備份,以及從 Azure SQL 儲存體中的備份還原。
必要條件
備妥環境以使用 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-AzSqlInstanceDatabaseLongTermRetentionBackup
和 Restore-AzSqlInstanceDatabase
,您必須是下列其中一個角色的成員:
- 「訂用帳戶擁有者」角色,或
- SQL 受控執行個體參與者角色或
- 有下列權限的自訂角色:
Microsoft.Sql/locations/longTermRetentionManagedInstanceBackups/read
Microsoft.Sql/locations/longTermRetentionManagedInstances/longTermRetentionManagedInstanceBackups/read
Microsoft.Sql/locations/longTermRetentionManagedInstances/longTermRetentionDatabases/longTermRetentionManagedInstanceBackups/read
針對 Remove-AzSqlInstanceDatabaseLongTermRetentionBackup
,您必須是下列其中一個角色的成員:
- 「訂用帳戶擁有者」角色,或
- 有下列權限的自訂角色:
Microsoft.Sql/locations/longTermRetentionManagedInstances/longTermRetentionDatabases/longTermRetentionManagedInstanceBackups/delete
權限
若要查看和還原 LTR 備份,您必須是下列其中一個角色的成員:
- 「訂用帳戶擁有者」角色,或
- SQL 受控執行個體參與者角色或
- 有下列權限的自訂角色:
Microsoft.Sql/locations/longTermRetentionManagedInstanceBackups/read
Microsoft.Sql/locations/longTermRetentionManagedInstances/longTermRetentionManagedInstanceBackups/read
Microsoft.Sql/locations/longTermRetentionManagedInstances/longTermRetentionDatabases/longTermRetentionManagedInstanceBackups/read
若要刪除 LTR 備份,您必須是下列其中一個角色的成員:
- 「訂用帳戶擁有者」角色,或
- 有下列權限的自訂角色:
Microsoft.Sql/locations/longTermRetentionManagedInstances/longTermRetentionDatabases/longTermRetentionManagedInstanceBackups/delete
注意
SQL 受控執行個體參與者角色沒有刪除 LTR 備份的權限。
可授與訂閱或資源群組範圍的 Azure 角色型存取控制 (RBAC) 權限。 不過,若要存取屬於已卸載執行個體的 LTR 備份,則必須在該執行個體的「訂用帳戶」範圍授與權限。
Microsoft.Sql/locations/longTermRetentionManagedInstances/longTermRetentionDatabases/longTermRetentionManagedInstanceBackups/delete
建立長期保留原則
您可以將 SQL 受控執行個體設定為保留自動備份的期間比您服務層級的保留期限還要長。
在 Azure 入口網站,選取您的受控執行個體,然後選取 [備份]。 在 [保留原則] 索引標籤上,選取您要設定或修改長期備份保留原則的資料庫。 變更不會套用到任何未選取的資料庫。
在 [設定原則] 窗格中,指定您所需的保留期間為每週、每月或每年備份。 選擇保留期間 '0',表示不應設定長期備份保留。
完成時,選取 [套用]。
重要
當您啟用長期備份保留原則時,最多可能需要 7 天的時間,第一個備份才會變成可見且可供還原。 如需 LTR 備份頻率的詳細資訊,請參閱長期備份保留。
執行 az sql midb show 命令,取得 SQL 受控執行個體資料庫的詳細資料。
az sql midb show /
--resource-group mygroup /
--managed-instance myinstance /
--name mymanageddb /
--subscription mysubscription
執行 az sql db ltr-policy set 命令,建立 LTR 原則。 下列範例會將長期保留原則設定為 12 週進行每週備份。
az sql midb ltr-policy set /
--resource-group mygroup /
--managed-instance myinstance /
--name mymanageddb /
--weekly-retention "P12W"
此範例會將保留原則設定為 12 週進行每週備份、5 年進行每年備份,以及在 4 月 15 日的第一週進行每年 LTR 備份。
az sql midb ltr-policy set /
--resource-group mygroup /
--managed-instance myinstance /
--name mymanageddb /
--weekly-retention "P12W" /
--yearly-retention "P5Y" /
--week-of-year 16
# get the Managed Instance
$subId = "<subscriptionId>"
$instanceName = "<instanceName>"
$resourceGroup = "<resourceGroupName>"
$dbName = "<databaseName>"
Connect-AzAccount
Select-AzSubscription -SubscriptionId $subId
$instance = Get-AzSqlInstance -Name $instanceName -ResourceGroupName $resourceGroup
# create LTR policy with WeeklyRetention = 12 weeks. MonthlyRetention and YearlyRetention = 0 by default.
$LTRPolicy = @{
InstanceName = $instanceName
DatabaseName = $dbName
ResourceGroupName = $resourceGroup
WeeklyRetention = 'P12W'
}
Set-AzSqlInstanceDatabaseBackupLongTermRetentionPolicy @LTRPolicy
# create LTR policy with WeeklyRetention = 12 weeks, YearlyRetention = 5 years and WeekOfYear = 16 (week of April 15). MonthlyRetention = 0 by default.
$LTRPolicy = @{
InstanceName = $instanceName
DatabaseName = $dbName
ResourceGroupName = $resourceGroup
WeeklyRetention = 'P12W'
YearlyRetention = 'P5Y'
WeekOfYear = '16'
}
Set-AzSqlInstanceDatabaseBackupLongTermRetentionPolicy @LTRPolicy
檢視備份及從備份還原
若要從 Azure 入口網站檢視可用的長期備份,請遵循下列步驟:
在 Azure 入口網站,選取您的受控執行個體,然後選取 [備份]。 在 [可用備份] 索引標籤上,選取您要查看可用備份的資料庫。 選取 [管理]。
在 [管理備份] 窗格中,檢閱可用的備份。
您也可以在此頁面選擇備份並選取 [還原],進行備份還原作業。
或者,若要使用 Azure 入口網站從長期保留還原備份,請遵循下列步驟:
登入 Azure 入口網站。
移至您打算將資料庫還原至其中的目標 SQL 受控執行個體。
在 [概觀] 頁面上,選擇 [+ 新增資料庫] 以開啟 [建立 Azure SQL 受控資料庫] 頁面。
在 [建立 Azure SQL 受控資料庫] 頁面 [基本] 索引標籤的 [專案詳細資料] 下方,提供訂用帳戶和資源群組詳細資料。 然後,在 [資料庫詳細資料] 下方,提供您打算還原的資料庫的新名稱。 確認下拉式清單中列出正確的受控執行個體。 然後選取 [下一步: 資料來源 >]
在 [資料來源] 索引標籤上,選擇 [使用現有資料] 下方的 [時間點還原]。 提供訂用帳戶、資源群組和含有來源資料庫的受控執行個體。 從 [受控資料庫] 下拉式清單中,選擇您想要還原的資料庫,然後選擇您想要從中還原資料庫的時間點。 來源和目標執行個體可以是相同的執行個體或兩個不同的執行個體。 選取 [下一步:其他設定>]
在 [其他設定] 索引標籤上,您可以核取 [從來源資料庫繼承保留原則] 的方塊,或者,您也可以選取 [設定保留] 以開啟 [設定原則] 頁面,並為還原的資料庫設定需要的保留原則。 完成後,選取 [檢閱 + 建立]。
驗證成功時,在 [檢閱 + 建立] 上,選取 [建立] 以還原資料庫。
此動作會啟動還原程序,該程序會建立新的資料庫,並將原始資料庫於指定時間點的資料填入其中。 如需復原程序的詳細資訊,請參閱復原時間。
檢視 LTR 原則
執行 az sql db ltr-policy show 命令,檢視執行個體內單一資料庫的 LTR 原則。
az sql midb ltr-policy show \
--resource-group mygroup \
--managed-instance myinstance \
--name mymanageddb
檢視 LTR 備份
使用 az sql midb ltr-backup list 命令檢視執行個體內的 LTR 備份。
az sql midb ltr-backup list \
--resource-group mygroup \
--location eastus2 \
--managed-instance myinstance
從 LTR 備份還原
執行 az sql midb ltr-backup restore 命令,從 LTR 備份還原您的資料庫。 您可以執行 az sql midb ltr-backup show 取得 backup-id
。
使用命令 backup-id
建立 az sql db ltr-backup show
的變數,以供日後使用。
get_backup_id=$(az sql midb ltr-backup show
--location eastus2 \
--managed-instance myinstance \
--database mydb \
--name "3214b3fb-fba9-43e7-96a3-09e35ffcb336;132292152080000000" \
--query 'id' \
--output tsv)
從 LTR 備份還原您的資料庫
az sql midb ltr-backup restore \
--dest-database targetmidb \
--dest-mi myinstance \
--dest-resource-group mygroup \
--backup-id $get_backup_id
重要
若要在刪除執行個體後從 LTR 備份還原,則必須擁有執行個體的訂用帳戶範圍權限,且該訂用帳戶必須為作用中。
注意
從這裡開始,您可以使用 SQL Server Management Studio 連線到已還原的資料庫來執行所需的工作,例如從還原的資料庫擷取一堆資料來複製到現有的資料庫,或刪除現有的資料庫,並將還原的資料庫重新命名為現有的資料庫名稱。 請參閱還原時間點。
檢視 LTR 原則
此範例示範如何列出執行個體內單一資料庫的 LTR 原則。
# gets the current version of LTR policy for a database
$LTRPolicy = @{
InstanceName = $instanceName
DatabaseName = $dbName
ResourceGroupName = $resourceGroup
}
Get-AzSqlInstanceDatabaseBackupLongTermRetentionPolicy @LTRPolicy
此範例示範如何列出執行個體上所有資料庫的 LTR 原則。
# gets the current version of LTR policy for all of the databases on an instance
$Databases = Get-AzSqlInstanceDatabase -ResourceGroupName $resourceGroup -InstanceName $instanceName
$LTRParams = @{
InstanceName = $instanceName
ResourceGroupName = $resourceGroup
}
foreach($database in $Databases.Name){
Get-AzSqlInstanceDatabaseBackupLongTermRetentionPolicy @LTRParams -DatabaseName $database
}
清除 LTR 原則
此範例示範如何清除資料庫中的 LTR 原則。
# remove the LTR policy from a database
$LTRPolicy = @{
InstanceName = $instanceName
DatabaseName = $dbName
ResourceGroupName = $resourceGroup
RemovePolicy = $true
}
Set-AzSqlInstanceDatabaseBackupLongTermRetentionPolicy @LTRPolicy
檢視 LTR 備份
此範例示範如何列出執行個體內的 LTR 備份。
$instance = Get-AzSqlInstance -Name $instanceName -ResourceGroupName $resourceGroup
# 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
Get-AzSqlInstanceDatabaseLongTermRetentionBackup -Location $instance.Location
# get the list of LTR backups from the Azure region under the given managed instance
$LTRBackupParam = @{
Location = $instance.Location
InstanceName = $instanceName
}
Get-AzSqlInstanceDatabaseLongTermRetentionBackup @LTRBackupParam
# get the LTR backups for a specific database from the Azure region under the given managed instance
$LTRBackupParam = @{
Location = $instance.Location
InstanceName = $instanceName
DatabaseName = $dbName
}
Get-AzSqlInstanceDatabaseLongTermRetentionBackup @LTRBackupParam
# list LTR backups only from live databases (you have option to choose All/Live/Deleted)
$LTRBackupParam = @{
Location = $instance.Location
DatabaseState = 'Live'
}
Get-AzSqlInstanceDatabaseLongTermRetentionBackup @LTRBackupParam
# only list the latest LTR backup for each database
$LTRBackupParam = @{
Location = $instance.Location
InstanceName = $instanceName
OnlyLatestPerDatabase = $true
}
Get-AzSqlInstanceDatabaseLongTermRetentionBackup @LTRBackupParam
從 LTR 備份還原
此範例示範如何從 LTR 備份還原。 請注意,這個介面並未變更,但資源識別碼參數現在需要 LTR 備份資源識別碼。
# restore a specific LTR backup as an P1 database on the instance $instanceName of the resource group $resourceGroup
$LTRBackupParam = @{
Location = $instance.Location
InstanceName = $instanceName
DatabaseName = $dbname
OnlyLatestPerDatabase = $true
}
$ltrBackup = Get-AzSqlInstanceDatabaseLongTermRetentionBackup @LTRBackupParam
$RestoreLTRParam = @{
TargetInstanceName = $instanceName
TargetResourceGroupName = $resourceGroup
TargetInstanceDatabaseName = $dbName
FromLongTermRetentionBackup = $true
ResourceId = $ltrBackup.ResourceId
}
Restore-AzSqlInstanceDatabase @RestoreLTRParam
重要
若要在刪除執行個體後從 LTR 備份還原,則必須擁有執行個體的訂用帳戶範圍權限,且該訂用帳戶必須為作用中。 您也必須省略選擇性的 -ResourceGroupName 參數。
注意
從這裡開始,您可以使用 SQL Server Management Studio 連線到已還原的資料庫來執行所需的工作,例如從還原的資料庫擷取一堆資料來複製到現有的資料庫,或刪除現有的資料庫,並將還原的資料庫重新命名為現有的資料庫名稱。 請參閱還原時間點。
刪除 LTR 備份
刪除針對具有 LTR 原則的特定資料庫所保留的備份。
重要
刪除 LTR 備份,便無法回復。 若要在刪除執行個體後刪除 LTR 備份,則必須有訂用帳戶範圍權限。 在 Azure 監視器中,您可藉由篩選「刪除長期保留備份」作業,來設定每項刪除的通知。 活動記錄包含提出要求的人員和時間資訊。 如需詳細指示,請參閱建立活動記錄警示。
- 在 Azure 入口網站中,瀏覽至 SQL 受控執行個體。
- 選取 [備份]。 若要檢視特定資料庫的可用 LTR 備份,請選取 [可用的 LTR 備份] 欄下的 [管理]。 這會隨即出現一個窗格,其中列出所選資料庫的可用 LTR 備份。
- 在出現的 [可用的 LTR 備份] 窗格中,檢閱可用的備份。 選取待刪除的備份。 選取 [刪除]。
此範例示範如何刪除備份清單中的最早 LTR 備份。 此範例會從指定 SQL 受控執行個體下的 Azure 區域,取得特定資料庫的 LTR 備份清單。
# remove the earliest backup
# get the LTR backups for a specific database from the Azure region under the given SQL managed instance
$LTRBackupParam = @{
Location = $instance.Location
InstanceName = $instanceName
DatabaseName = $dbName
}
$ltrBackups = Get-AzSqlInstanceDatabaseLongTermRetentionBackup @LTRBackupParam
$ltrBackup = $ltrBackups[0]
Remove-AzSqlInstanceDatabaseLongTermRetentionBackup -ResourceId $ltrBackup.ResourceId
限制
從已設定 SQL Server 2022 更新原則的執行個體中取得的資料庫備份可以還原至已設定 SQL Server 2022 或一律保持最新的更新原則的執行個體。 從已設定一律保持最新的更新原則的執行個體中取得的資料庫備份只能還原至同時已設定一律保持最新的更新原則的執行個體。
下一步