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

如何解决Azure故障转移组主库无、副库存在的数据库删除问题

解决Azure SQL故障转移组中Secondary存在但Primary不存在的数据库删除问题

这确实是Azure SQL故障转移组偶尔会碰到的元数据不一致问题,我来分享几个经过验证的解决思路,帮你跳出这个循环:

方法1:强制从Primary端的故障转移组中移除数据库记录

因为Primary端没有这个数据库,所以不用通过Get-AzSqlDatabase管道传递对象,直接指定数据库名称调用移除命令试试:

Remove-AzSqlDatabaseFromFailoverGroup `
  -ResourceGroupName "SASepa" `
  -ServerName "sasepa" `
  -FailoverGroupName "sa-sepa-test-fog" `
  -DatabaseName "SEPA-e0e9c319-6237-4c2a-9204-cf9bd53f4a83Test" `
  -Debug

这个命令会直接操作故障转移组的元数据,尝试把该数据库从组中移除,不受Primary端是否存在对应库的限制。

方法2:故障转移Secondary为Primary后移除数据库

如果方法1失败,我们可以切换故障转移组的角色,让Secondary变成Primary,这样就能直接对目标数据库进行操作:

  1. 执行故障转移(允许数据丢失,因为Primary端本来就没有这个库):
Invoke-AzSqlDatabaseFailoverGroupFailover `
  -ResourceGroupName "SASepa" `
  -ServerName "sasepa-geo" `
  -FailoverGroupName "sa-sepa-test-fog" `
  -AllowDataLoss
  1. 现在sasepa-geo是Primary了,直接从故障转移组中移除数据库:
Remove-AzSqlDatabaseFromFailoverGroup `
  -ResourceGroupName "SASepa" `
  -ServerName "sasepa-geo" `
  -FailoverGroupName "sa-sepa-test-fog" `
  -DatabaseName "SEPA-e0e9c319-6237-4c2a-9204-cf9bd53f4a83Test"
  1. 移除成功后,再故障转移回原来的Primary sasepa:
Invoke-AzSqlDatabaseFailoverGroupFailover `
  -ResourceGroupName "SASepa" `
  -ServerName "sasepa" `
  -FailoverGroupName "sa-sepa-test-fog"

方法3:直接删除Secondary端的数据库(最后手段)

如果以上方法都不行,尝试直接删除Secondary上的数据库(注意这会直接删除数据,请确认该数据库不再需要):

az sql db delete --resource-group SASepa --server sasepa-geo --name SEPA-e0e9c319-6237-4c2a-9204-cf9bd53f4a83Test --yes

如果这个命令提示数据库属于故障转移组,可以尝试通过Azure Portal手动刷新故障转移组的数据库列表,再尝试移除操作——有时候Portal的后台处理逻辑会比PowerShell更灵活。

补充说明

这种状态通常是由于之前的同步中断、删除操作未完全完成,或者临时网络问题导致的元数据不同步。解决后建议检查故障转移组的健康状态,确保后续同步正常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 00:12:45