適用於:
Azure SQL 受控執行個體
本文說明在您在一般用途服務層級使用 Azure SQL 受控執行個體時,如何停止和啟動執行個體以節省計費成本。 您可以使用 Azure 入口網站、Azure PowerShell、Azure CLI 或 REST API 停止和啟動執行個體。
概觀
若要節省計費成本,您可以在不使用一般用途 SQL 受控執行個體時停止它。 停止執行個體與解除配置虛擬機器類似。 當執行個體處於停止狀態時,系統不會向您收取計算和授權費用,但您仍需支付資料和備份儲存體費用。
停止 SQL 受控執行個體會清除所有快取的資料。
此功能引進了三種新的 SQL 受控執行個體狀態,如下圖所示:
開始執行停止操作之後,執行個體通常需要大約 5 分鐘才會停止。 然而,啟動執行個體從起始啟動作業算起,需要大約 20 分鐘。 只有處於備妥狀態的 SQL 受控執行個體才能停止。 停止執行個體之後,執行個體會維持在已停止狀態,直到手動起始啟動作業,或使用已定義的排程觸發以起始啟動作業為止。 只能啟動處於已停止狀態的執行個體。
發生下列作業時,Azure 會將計算資源配置給基礎虛擬叢集:
- 建立 SQL 受控執行個體。
- 啟動已停止的 SQL 受控執行個體。
- 調整 SQL 受控執行個體的大小。 例如,變更服務層級、儲存體、硬體世代或虛擬核心數目。
雖然持續投資於更多基礎結構來支援客戶需求,但特定區域中 Azure 服務的需求空前成長,可能會偶爾發生資源配置失敗。 這種情況可能會導致作業持續時間延長,如果有新的虛擬叢集建置 (根據 管理作業持續時間) ,則大約需要 4 小時。 這也可能導致無法啟動執行個體,在此情況下,您應該稍後再試一次。
重要
SQL 受控執行個體作為平台即服務 (PaaS) 服務的一部分,會負責系統元件中每個組件的合規性。 如果有系統維護的緊急需求,則需要實例在線。 在此情況下,Azure 可以起始啟動作業,並讓執行個體保持線上狀態,直到維護作業完成為止,此時 Azure 會停止執行個體。 計算資源和授權費用將在執行個體處於線上狀態的全部時間收取。
動作類型
有兩種方法可以停止和啟動執行個體:可以在需要時手動操作,或者建立排程。
手動命令
您可以使用手動命令立即觸發停止和啟動動作。 手動命令適用於不活躍時期較長且無固定模式的執行個體,或用於測試目的。 或者,您可以使用 Azure 自動化排程或任何自訂解決方案,建立無法使用 SQL 受控執行個體中內建停止和啟動排程器進行設定的自訂且更具彈性的排程。
排定的指令
您也可以建立一個排程,其中包含一或多個觸發停止或啟動動作的時間點。 排程命令適用於具有一般模式的執行個體。 例如,每個工作日上午 8 點啟動執行個體,在下午 5 點停止,然後在週末早上 7 點啟動執行個體,並在上午 11 點停止執行個體。 將您的命令排程化使您無需建立自訂解決方案,或使用 Azure 自動化來建立停止和啟動的排程。
排程項目代表停止和開始事件發生的時間點,而不是執行個體處於運行狀態的時間。 當您建立排程時,請將作業的持續時間納入考量。 例如,如果您想要讓執行個體在上午 8 點啟動並執行,您可以定義在上午 7:40 起始啟動作業的排程。
針對停止和啟動排程,請考慮下列規則:
- 每一個排程項目都定義為停止和開始配對,而且必須同時移入停止和開始值。 不可能有填入停止值但啟動值缺失的情況,反之亦然。
- 排程配對不能重疊。 如果與排程的時間重疊,API 會傳回錯誤。
- 任兩個連續動作之間的時間範圍 (也就是在停止之後啟動,或在啟動之後停止) 必須至少一小時。 例如,如果啟動的排程為上午 10 點,則不能將停止動作排程在上午 11 點之前。
- 如果在觸發停止時發生衝突作業,例如調整虛擬核心進行中,則機制會在 10 分鐘後重試。 如果在 10 分鐘後,衝突作業仍處於作用中狀態,則會略過停止作業。
計費
已停止的執行個體不會針對虛擬核心和 SQL 授權計費,只需要支付資料和備份儲存體費用。 不過,虛擬核心和授權計費是以每個 「已啟動」 小時進行收費。 例如,在 12:01 時,即使執行個體在該小時內停止,您仍需支付整個小時的費用。
Azure Hybrid Benefit
每個資源都會套用 Azure Hybrid Benefit (AHB)。 如果您的執行個體使用 Azure 混合式權益來獲得授權成本折扣,您可以在執行個體處於停止狀態時將 Azure 混合式權益套用至另一個資源。 您必須先在執行個體上停用 AHB,然後停止執行個體。 同樣地,重新啟動執行個體之後,您必須重新啟用 AHB 功能,以便套用授權權益。
預約定價
Azure 預留 會應用於虛擬核心和已發出的時數。 當符合保留定價資格的執行個體停止時,系統會自動將保留定價重新導向至另一個執行個體 (如果有的話)。 您可以使用停止和啟動功能,超額配置保留執行個體定價。
例如,假設您購買具有 16 個虛擬核心保留的 SQL 受控執行個體。 您可以在下午 1 點到下午 2 點執行兩個具有 8 個虛擬核心的執行個體、停止這兩個執行個體,然後在下午 2 點到下午 3 點執行兩個各具 8 個虛擬核心的不同執行個體。 此方法會每小時消耗您 16 個虛擬核心的限制,並分散於四個執行個體。
保留折扣以「不用則作廢」為基準。 也就是說,如果您在指定的小時內沒有相符的資源,則該小時的保留數量就作廢。 未使用的保留時數無法移轉。
停止和啟動功能的限制
請考慮下列限制:
- 執行個體的停止和啟動目前僅適用於一般用途服務層級中的執行個體。
- 您無法停止以下執行個體:
- 當 SQL 受控執行個體處於停止狀態時,無法變更其組態屬性。 若要變更任何屬性,您必須啟動執行個體。
- 當執行個體處於已停止狀態,您無法進行備份。 例如,假設您已設定長期備份,並且每年進行備份。 如果您在已定義的每年備份期間停止執行個體,則會略過該備份。 建議您在每年備份期間,保持執行個體運行。
- 一旦啟動停止或啟動操作,就無法取消它。
- 如果在執行個體停止時排程 SQL 受控執行個體的弱點評量掃描,則掃描執行會失敗。
- 不會針對處於停止狀態的執行個體傳送維護通知。 結果是:
- 通知序列不完整。 例如,不會傳送 進階通知 ,而會傳送 進行中通知 。
- 通知內容中受影響的資源清單中缺少 SQL 受控執行個體。
- SQL 受控執行個體中可用的錯誤記錄不會 保存 ,而且會在執行個體停止時自動清除。
必要條件
若要使用執行個體停止和啟動功能,您的執行個體必須位於一般用途服務層級。 具有管理執行個體權限的使用者可以停止和啟動執行個體。 若要深入瞭解,請檢閱 資料庫的 Azure 權限。
不符合必要條件的執行個體不會在 Azure 入口網站的 SQL 受控執行個體資源的 [概觀] 頁面上看到停止和啟動控件。 將滑鼠停留在控制項上,說明執行個體無法使用停止和啟動功能的原因。
準備命令列環境
如果您使用 Azure 入口網站,請略過此步驟。
如果您想要使用 PowerShell 或 Azure CLI 來停止或啟動執行個體,您必須設定命令列工具並定義參數來準備環境。
除了設定命令列工具之外,您也可以使用 Azure Cloud Shell。 可用來執行本文中的步驟的免費互動式殼層。 它具有常見的預先安裝 Azure 工具,並設定為您的帳戶使用。 如果您沒有 Azure 訂用帳戶,請在開始之前,先建立 Azure 免費帳戶。
若要開啟 Cloud Shell,請選取程式碼區塊右上角的 [試用]。 您也可以前往https://shell.azure.com,從另一個瀏覽器索引標籤啟動 Cloud Shell。
若要使用 PowerShell 停止和啟動您的執行個體,您可以安裝 Azure PowerShell,或使用 Azure Cloud Shell。
當開啟 Cloud Shell 時,請確認已為您的環境選取 PowerShell。 後續的工作階段會在 PowerShell 環境中使用 Azure CLI。 選取 [複製] 即可複製程式碼區塊,將它貼到 Cloud Shell 中,然後按 Enter 鍵加以執行。
啟動 PowerShell 或 Cloud Shell 之後,定義下列參數:
$SubscriptionId = "<Subscription-ID>"
$SqlMIName = "<SQL-MI-name>"
$RgName = "<SQL-MI-resource-group>"
# Login-AzAccount
Select-AzSubscription -SubscriptionName $SubscriptionID
若要使用 Azure CLI 停止和啟動您的執行個體,您可以安裝 Azure CLI,或使用 Azure Cloud Shell。
當開啟 Cloud Shell 時,請確認已為您的環境選取 Bash。 後續的工作階段會在 Bash 環境中使用 Azure CLI。 選取 [複製] 即可複製程式碼區塊,將它貼到 Cloud Shell 中,然後按 Enter 鍵加以執行。
Cloud Shell 在初始登入的帳戶下會自動完成驗證。 使用以下腳本以不同的訂閱登入,並將 <Subscription ID> 替換為您的 Azure 訂用帳戶識別碼。
subscription="<Subscription-ID>"
instanceName="<SQL-MI-name>"
resourceGroupName="<SQL-MI-resource-group>"
az account set -s $subscription # ...or use 'az login'
如需詳細資訊,請參閱設定使用中訂閱或以互動方式登入。
停止 SQL 受控執行個體
您可以使用下列途徑來停止執行個體:
- Azure 入口網站
- PowerShell
- Azure CLI
- REST API 呼叫,透過任何工具叫用
若要使用 Azure 入口網站停止 SQL 受控執行個體,請移至執行個體的 [ 概觀 ] 頁面,然後選取 [停止] 按鈕。
如果已停止執行個體,則無法使用 [停止] 按鈕。
若要使用 PowerShell 停止 SQL 受控執行個體,請使用 Stop-AzSqlInstance,例如下列範例指令碼:
Stop-AzSqlInstance -Name $SqlMIName -ResourceGroupName $RgName
若要使用 Azure CLI 停止 SQL 受控執行個體,請使用 az sql mi stop,例如下列範例指令碼:
az sql mi stop --mi $instanceName -g $resourceGroupName
呼叫受 控執行個體 - 停止 API 來停止 SQL 受控執行個體:
POST
https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/
providers/Microsoft.Sql/managedInstances/{managedInstanceName}/stop?api-version=2021-08-01-preview
啟動 SQL 受控執行個體
您可以使用下列途徑來啟動執行個體:
- Azure 入口網站
- PowerShell
- Azure CLI
- REST API 呼叫,透過任何工具叫用
停止 SQL 受控執行個體之後,若要使用 Azure 入口網站啟動它,請移至執行個體的 [ 概觀 ] 頁面,然後選取 [ 開始] 按鈕。
如果已啟動執行個體,則無法使用 [啟動] 按鈕。
若要使用 PowerShell 啟動 SQL 受控執行個體,請使用 Start-AzSqlInstance,例如下列範例腳本:
Start-AzSqlInstance -Name $SqlMIName -ResourceGroupName $RgName
若要使用 Azure CLI 啟動 SQL 受控執行個體,請使用 az sql mi start,例如下列範例指令碼:
az sql mi start --mi $instanceName -g $resourceGroupName
呼叫受 控執行個體 - 啟動 API 來啟動 SQL 受控執行個體:
https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/
providers/Microsoft.Sql/managedInstances/{managedInstanceName}/start?api-version=2021-08-01-preview
管理啟停排程
您可以使用下列途徑管理停止和啟動排程:
- Azure 入口網站
- PowerShell
- Azure CLI
- REST API 呼叫,透過任何工具叫用
若要使用 Azure 入口網站管理停止和啟動排程,請移至您的執行個體,然後選取資源功能表中的 [啟動/停止排程]。
在 [啟動/停止排程] 窗格中,您可以:
- 檢視現有的排程。
- 在 [時區] 下拉式清單中指定排程事件的時區。
- 透過選取 [建立排程項目] 來建立新的排程。
- 選取鉛筆圖示來修改現有的排程。
- 選取垃圾桶圖示來刪除現有的排程。
建立排程
若要建立排程以使用 PowerShell 停止和啟動 SQL 受控執行個體,請使用 New-AzSqlInstanceStartStopSchedule 和 New-AzSqlInstanceScheduleItem,例如下列範例腳本:
$newSchedule = [System.Collections.ArrayList]::new()
$newScheduleMonday = New-AzSqlInstanceScheduleItem -StartDay Monday -StopDay Monday -StartTime "09:00" -StopTime "17:00"
$newSchedule.add($newScheduleMonday)
$newScheduleTuesday = New-AzSqlInstanceScheduleItem -StartDay Tuesday -StopDay Tuesday -StartTime "09:00" -StopTime "17:00"
$newSchedule.add($newScheduleTuesday)
$newScheduleWednesday = New-AzSqlInstanceScheduleItem -StartDay Wednesday -StopDay Wednesday -StartTime "07:00" -StopTime "19:00"
$newSchedule.add($newScheduleWednesday)
$newScheduleThursday = New-AzSqlInstanceScheduleItem -StartDay Thursday -StopDay Thursday -StartTime "09:00" -StopTime "17:00"
$newSchedule.add($newScheduleThursday)
$newScheduleFriday = New-AzSqlInstanceScheduleItem -StartDay Friday -StopDay Friday -StartTime "11:00" -StopTime "17:00"
$newSchedule.add($newScheduleFriday)
New-AzSqlInstanceStartStopSchedule -InstanceName $SqlMIName -ResourceGroupName $RgName -TimeZone "Central Europe Standard Time" -ScheduleList $newSchedule
檢查排程
若要檢查現有的排程,請使用 Get-AzSqlInstanceStartStopSchedule,例如下列範例指令碼:
$currentSchedule = Get-AzSqlInstanceStartStopSchedule -InstanceName $SqlMIName -ResourceGroupName $RgName
$scheduleItemsList = $currentSchedule.ScheduleList
$scheduleItemsList
更新排程
若要更新現有的排程以停止和啟動 SQL 受控執行個體,請使用 New-AzSqlInstanceStartStopSchedule 和 New-AzSqlInstanceScheduleItem,例如下列範例指令碼:
$currentSchedule = Get-AzSqlInstanceStartStopSchedule -InstanceName $SqlMIName -ResourceGroupName $RgName
$scheduleItemsList = $currentSchedule.ScheduleList
# Remove Thursday item
$scheduleItemsList = $scheduleItemsList | Where-Object { $_.StartDay -ne "Thursday" }
# Adjust Friday item
$fridaySchedule = $scheduleItemsList | Where-Object { $_.StartDay -eq "Friday" }
$fridaySchedule.StartTime = "09:00"
# Add new Thursday item
$newScheduleThursday = New-AzSqlInstanceScheduleItem -StartDay Thursday -StopDay Thursday -StartTime "12:00" -StopTime "18:00"
$scheduleItemsList += $newScheduleThursday
# Update schedule with new configuration
New-AzSqlInstanceStartStopSchedule -InstanceName $SqlMIName -ResourceGroupName $RgName -TimeZone "Central Europe Standard Time" -ScheduleList $scheduleItemsList
刪除排程
若要刪除現有的排程,請使用 Remove-AzSqlInstanceStartStopSchedule,例如下列範例指令碼:
Remove-AzSqlInstanceStartStopSchedule -InstanceName $SqlMIName -ResourceGroupName $RgName
建立排程
若要建立排程以使用 Azure CLI 停止和啟動 SQL 受控執行個體,請使用 az sql mi start-stop-schedule create,例如下列範例指令碼:
scheduleItems="[{'startDay':'Monday','startTime':'10:00','stopDay':'Monday','stopTime':'18:00'},{'startDay':'Tuesday','startTime':'10:00','stopDay':'Tuesday','stopTime':'18:00'},{'startDay':'Wednesday','startTime':'12:00','stopDay':'Wednesday','stopTime':'22:00'},{'startDay':'Thursday','startTime':'14:00','stopDay':'Thursday','stopTime':'20:00'},{'startDay':'Friday','startTime':'14:00','stopDay':'Friday','stopTime':'20:00'}]"
timezone="Central Europe Standard Time"
az sql mi start-stop-schedule create --mi "$instanceName" -g "$resourceGroupName" --timezone-id "$timezone" --schedule-list "$scheduleItems"
檢查排程
若要檢查現有的排程,請使用 az sql mi start-stop-schedule show,例如下列範例指令碼:
az sql mi start-stop-schedule show --mi "$instanceName" -g "$resourceGroupName"
更新排程
若要更新現有的排程以停止和啟動 SQL 受控執行個體,請使用 az sql mi start-stop-schedule update,例如下列範例指令碼:
# append an item
newScheduleItem="{'startDay':'Friday','startTime':'09:00 PM','stopDay':'Friday','stopTime':'11:00 PM'}"
az sql mi start-stop-schedule update --mi $instanceName -g $resourceGroupName --add schedule_list "$newScheduleItem"
# remove an item
#items in list are indexed (0 based)
az sql mi start-stop-schedule update --mi $instanceName -g $resourceGroupName --remove schedule_list 2
刪除排程
若要刪除現有的排程,請使用 az sql mi start-stop-schedule delete,例如下列範例指令碼:
az sql mi start-stop-schedule delete --mi "$instanceName" -g "$resourceGroupName"
建立或更新排程
若要建立或更新排程以停止和啟動 SQL 受控執行個體,請呼叫 啟動、停止受控執行個體排程 - 建立或更新 API,並調整內文內容以符合您的排程:
PUT https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/managedInstances/{managedInstanceName}/startStopSchedules/default?api-version=2022-08-01-preview
{
"properties": {
"timeZoneId": "Central European Standard Time",
"description": "This is a schedule for our Dev/Test environment.",
"scheduleList": [
{
"startDay": "Monday",
"startTime": "07:30",
"stopDay": "Wednesday",
"stopTime": "17:00"
},
{
"startDay": "Thursday",
"startTime": "15:00",
"stopDay": "Friday",
"stopTime": "15:00"
}
]
}
}
檢查排程
若要檢查現有的排程,請呼叫 啟動停止受控執行個體排程 - 取得 API:
GET
https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/
providers/Microsoft.Sql/managedInstances/{managedInstanceName}/startStopSchedules/default?api-version=2022-08-01-preview
刪除排程
若要刪除現有的排程,請呼叫 啟動停止受控執行個體排程 - 刪除 API:
DELETE
https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/
providers/Microsoft.Sql/managedInstances/{managedInstanceName}/startStopSchedules/default?api-version=2022-08-01-preview
注意
目前,活動記錄只會擷取透過 Azure Resource Manager (ARM) 起始的作業。 排程的開始和停止作業不會在活動記錄上追蹤。 因此,目前無法透過 Azure 入口網站中的活動記錄來檢視排程啟動和停止作業的歷程記錄。 或者,透過基於此類日誌的任何監控。
相關內容