【问题标题】:Check whether Azure SQL database has been fully removed检查 Azure SQL 数据库是否已完全删除
【发布时间】:2020-02-04 03:55:43
【问题描述】:

我正在创建一个简单的 Azure 逻辑应用,它使用一个函数来:

  1. 删除从数据库
  2. 恢复主数据库的副本(与删除的从属数据库同名)

删除数据库

# Remove slave database
Remove-AzSqlDatabase `
    -DatabaseName $RestoreDatabaseName `
    -ServerName $ServerName `
    -ResourceGroupName $ResourceGroupName

Write-Host "Removed slave database"

恢复 Master 的 PIT 备份

# Restore database
Restore-AzSqlDatabase `
      -FromPointInTimeBackup `
      -PointInTime (Get-Date).AddMinutes(-2) `
      -ResourceGroupName $ResourceGroupName `
      -ServerName $ServerName `
      -TargetDatabaseName $RestoreDatabaseName `
      -ResourceId $Database.ResourceID `
      -ElasticPoolName $ElasticPoolName

我遇到的问题是删除数据库后,Azure 仍然可以在服务器上看到数据库,因此在还原时出现以下错误:

服务器上已存在目标数据库名称“Slave” '服务器地址'。

在开始下一个功能之前,我找不到任何方法来检查它是否已被完全删除。任何有关如何实现这一点的帮助将不胜感激。

【问题讨论】:

    标签: azure powershell azure-functions


    【解决方案1】:

    您可以使用Get-AzSqlDatabase 检查数据库是否仍在运行。

    Get-AzSqlDatabase -ResourceGroupName "ResourceGroup01" -ServerName "Server01" -DatabaseName "Database02"
    

    将它放在一个带有睡眠的循环中会给您一个轮询,以检查数据库何时最终永久消失,然后您可以恢复您的处理。

    Start-Sleep -s 15
    

    确保您的逻辑中有一个断路器,以防止在删除失败的情况下出现无限循环。

    使用新名称恢复数据库可能更容易避免延迟e.g. MyDb<yyyymmdd>

    或者,使用Azure REST API from SQL DB delete

    DELETE https://management.azure.com/subscriptions/00000000-1111-2222-3333-444444444444/resourceGroups/Default-SQL-SouthEastAsia/providers/Microsoft.Sql/servers/testsvr/databases/testdb?api-version=2017-10-01-preview
    

    monitor the location response of the 204 Accepted 确定数据库何时被完全删除。 Azure Durable Functions give you a great monitor pattern you can use

    【讨论】:

    • 不幸的是,这在 Azure 函数中似乎不起作用,循环错误并带有未找到的错误,然后在尝试恢复时立即返回已存在的错误。你可能是对的,也许我应该恢复然后重命名。
    • 如果您对 REST API 感到满意,我在答案中添加了另一个选项。使用删除 SQL DB REST API,它应该返回 204 Accepted,然后使用 204 响应中返回的位置进行轮询,直到数据库被完全删除。使用监视器模式的持久功能将是理想的。 docs.microsoft.com/en-us/azure/azure-functions/durable/…
    • 谢谢,试试 REST API。不幸的是,持久函数不支持 PowerShell 或 Python,所以我会有点迷失在那里。
    猜你喜欢
    • 2012-08-03
    • 2012-02-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-01
    • 2020-07-01
    相关资源
    最近更新 更多