You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何仅通过名称获取Azure SQL故障转移组并实现主副切换?

解决Azure SQL故障转移组双向切换问题

核心方案:仅通过故障转移组名称自动定位并切换

步骤1:遍历订阅内SQL服务器,查找目标故障转移组

由于Get-AzSqlDatabaseFailoverGroup需要指定服务器和资源组,我们可以先获取当前订阅下所有SQL服务器,再逐个查询故障转移组匹配目标名称:

$failoverGroupName = "你的故障转移组名称"

# 获取当前订阅下所有SQL服务器实例
$sqlServers = Get-AzSqlServer

# 遍历服务器查找目标故障转移组
$targetFailoverGroup = $null
foreach ($server in $sqlServers) {
    $failoverGroups = Get-AzSqlDatabaseFailoverGroup -ResourceGroupName $server.ResourceGroupName -ServerName $server.ServerName
    $matchedGroup = $failoverGroups | Where-Object { $_.FailoverGroupName -eq $failoverGroupName }
    if ($matchedGroup) {
        $targetFailoverGroup = $matchedGroup
        break
    }
}

if (-not $targetFailoverGroup) {
    Write-Error "未找到指定名称的故障转移组"
    exit
}

步骤2:识别当前辅助服务器

从故障转移组信息中,筛选出ReplicationRole为Secondary的服务器,这就是需要切换为主的目标:

$secondaryServer = $targetFailoverGroup.PartnerServers | Where-Object { $_.ReplicationRole -eq "Secondary" }

if (-not $secondaryServer) {
    Write-Error "未找到故障转移组中的辅助服务器"
    exit
}

步骤3:执行双向故障转移切换

调用Switch-AzSqlDatabaseFailoverGroup完成角色互换:

Switch-AzSqlDatabaseFailoverGroup `
    -ResourceGroupName $secondaryServer.ResourceGroupName `
    -ServerName $secondaryServer.ServerName `
    -FailoverGroupName $failoverGroupName

替代方案:通过App Service主机名定位资源组后处理

步骤1:通过主机名获取App Service资源

$appServiceHostname = "你的App Service主机名(如xxx.azurewebsites.net)"

# 获取匹配主机名的App Service
$appService = Get-AzWebApp | Where-Object { $_.DefaultHostName -eq $appServiceHostname }

if (-not $appService) {
    Write-Error "未找到指定主机名的App Service"
    exit
}

步骤2:获取该资源组内的SQL服务器

$sqlServersInRG = Get-AzSqlServer -ResourceGroupName $appService.ResourceGroupName

步骤3:查找目标故障转移组并执行切换

参考核心方案的步骤1-3,从该资源组的SQL服务器中定位故障转移组,再完成双向切换操作。

内容的提问来源于stack exchange,提问作者Don Chambers

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 08:02:50