簡體   English   中英

如何使用 PowerShell 在 Azure SQL 數據庫上將 ComputeModel 屬性設置為無服務器?

[英]How to set the ComputeModel property to Serverless on an Azure SQL Database using PowerShell?

我正在使用 Get-AzSqlDeletedDatabaseBackup 和 Restore-AzSqlDatabase Z3D265B4E1EEEF0DDF17881FA003B 命令從已刪除的數據庫備份中恢復 Azure SQL 數據庫(無服務器)。 恢復工作,但標簽和 ComputeModel 沒有與數據庫一起恢復。

我試過使用 Set-AzSqlDatabase:

Set-AzSqlDatabase -ResourceGroupName $resourcegroupname -DatabaseName $databasename -ServerName $servername -ComputeModel "Serverless" -AutoPauseDelayInMinutes 45

更新:我嘗試了以下代碼,並在使用 Set-AzResource cmdlet 之前設置了種類,但它沒有堅持下去

$resource = Get-AzResource -ResourceGroupName $resourcegroupname -ResourceType "Microsoft.Sql/servers/databases" -Name "$servername/$databasename"

Write-Host "Setting ComputeModel to Serverless..."
$resource.Kind = "v12.0,user,vcore,serverless"
$resource  
# resource.Kind is successfully set on the $resource object

Write-Host "Set-AzResource..."
$resource | Set-AzResource -Force

有人有想法么?

謝謝你。

干杯,

安迪

Get-AzSqlDeletedDatabaseBackupRestore-AzSqlDatabase PowerShell cmdlet 不包含獲取ComputeModel的屬性。

還原刪除備份數據庫時,我們不需要ComputeModel屬性。 在設置數據庫時,我們需要ComputeModel

如果要獲取 Azure SQL 數據庫的計算 model ,可以使用Get-AzResource命令獲取具體信息。

感謝@joy wang SO 解決方案,我們可以獲得無服務器 Azure SQL 數據庫。

在此處輸入圖像描述

感謝@holger 和@Delliganesh Sevanesan 的幫助,我能夠實現一個解決方案,恢復最近刪除的數據庫(SQL 數據庫),添加一些資源標簽,並將 ComputeModel 設置為無服務器。

這是代碼:

<# 
Purpose: Restore the most recently deleted Azure Sql Database

Dependencies:
    Az.Sql PowerShell module
#>

# Set variables first
$resourcegroupname = 'myresourcegroup'
$servername = 'myservername'
$databasename = 'mydatabasename'

[hashtable]$tags = @{ 
    application = "testing"
}

try {
    $deleteddatabases = Get-AzSqlDeletedDatabaseBackup -ResourceGroupName $resourcegroupname -ServerName $servername -DatabaseName $databasename
} catch {
    Write-Error "Error getting database backups [Get-AzSqlDeletedDatabaseBackup]: " + $_.Exception.Message
    exit(1)
}

# Get most recent backup in case there are multiple copies
# Assumes index and order in foreach is the same - proven in test
Write-Host "Database backups:"
$index = 0
$MostRecentBackupIndex = 0
$MostRecentBackupDate = (Get-date).AddDays(-2) # initialize variable with date from two days ago
foreach ($db in $deleteddatabases) {
    if ($db.CreationDate -ge $MostRecentBackupDate) {
        $MostRecentBackupIndex = $index
        $MostRecentBackupDate = $db.CreationDate
        Write-Host "Most Recent Database: $($db.DatabaseName) : Created: $($db.CreationDate) : DeleteDate: $($db.DeletionDate)"
    }
    $index++
}

$deleteddatabase = $deleteddatabases[$MostRecentBackupIndex]

Write-Host "----------------------------------------------------------------------------------"
Write-Host "Restoring: $($deleteddatabase.DatabaseName) from: $($deleteddatabase.CreationDate) backup"
Write-Host "----------------------------------------------------------------------------------"

Write-Host "Deleted database info ResourceId: "
Write-Host $deleteddatabase.ResourceId

try {
    Restore-AzSqlDatabase -FromDeletedDatabaseBackup `
        -DeletionDate $deleteddatabase.DeletionDate `
        -ResourceGroupName $resourcegroupname `
        -ServerName $servername `
        -TargetDatabaseName $databasename `
        -ResourceId $deleteddatabase.ResourceID `
        -Edition $deleteddatabase.Edition `
        -Vcore 2 `
        -ComputeGeneration "Gen5" 
} catch {
    Write-Error "Error restoring database [Restore-AzSqlDatabase]: " + $_.Exception.Message
    exit(1)
}

# Wait a few minutes to allow restore to complete before applying the tags
Start-Sleep -Seconds 180

Write-Host "Applying tags to database..."
try {
    $resource = Get-AzResource -ResourceGroupName $resourcegroupname -ResourceType "Microsoft.Sql/servers/databases" -Name "$servername/$databasename"
    New-AzTag -ResourceId $resource.Id -Tag $tags
} catch {
    Write-Error "Error adding tags to database [Get-AzResource, New-AzTag]: " + $_.Exception.Message
    exit(1)
}

Write-Host "Setting ComputeModel to Serverless..."
try {
    # Important - must include -AutoPauseDelayInMinutes 60, -MinVcore, and MaxVcore parameters (thanks holger)
    Set-AzSqlDatabase -ResourceGroupName $resourcegroupname -DatabaseName $databasename -ServerName $servername -ComputeModel Serverless -AutoPauseDelayInMinutes 60 -MinVcore 1 -MaxVcore 2
} catch {
    Write-Error "Error setting serverless mode [Set-AzSqlDatabase]: " + $_.Exception.Message
    exit(1)
}

Write-Host "Database restore complete."

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM