使用相同数据库名称复制或还原 Azure SQL 数据库无法正确复制/还原

问题描述 投票:0回答:1

我的弹性池中有两个 Azure SQL 数据库。它们被命名为Web和Web2。它们附加到部署槽并随交换移动,以便 Web 或 Web2 将成为服务公共流量的数据库(主槽)。

一旦交换它们,我想更新非公共 Web 数据库(可以是 Web 或 Web2)的数据,以便它们保持同步。

为了实现这一目标,我有一个 PowerShell 脚本来查找哪个数据库位于主插槽中。然后,我尝试使用数据库的异地还原来创建一个名为 RestoredDB 的新数据库,然后将其重命名为 Web 或 Web2,以便保持连接字符串不变...或者我尝试了复制 Azure SQL 数据库命令。

异地恢复示例

$GeoBackup = Get-AzSqlDatabaseGeoBackup -ResourceGroupName "ResourceGroup01" -ServerName "Server01" -DatabaseName "Database01"
Restore-AzSqlDatabase -FromGeoBackup -ResourceGroupName "TargetResourceGroup" -ServerName "TargetServer" -TargetDatabaseName "RestoredDatabase" -ResourceId $GeoBackup.ResourceID -ElasticPoolName "MyWebPool"

复制 Azure SQL DB 示例:

New-AzSqlDatabaseCopy -CopyDatabaseName <String> -CopyResourceGroupName <String> -CopyServerName <String> -DatabaseName db1 -ResourceGroupName MyResourceGroup -ServerName s1 -ElasticPoolName "MyWebPool"

在任何一种情况下,它都会创建具有正确大小(以 GB 为单位)的 RestoredDB 作为我想要恢复或复制的源...但是在删除非活动 Web(Web 或 Web2)并将 RestoredDB 重命名为 Web 或 Web2 时...它恢复到原始的 Web 或 Web2,而不是具有正确数据的 RestoredDB,刚刚重命名为所需的数据库以防止更新连接字符串。

这是因为地理冗余备份(保留 7 天),我需要创建一个唯一的数据库名称,而不是删除原始数据库并重命名我新创建或恢复的数据库?

azure azure-sql-database
1个回答
0
投票

重新运行相同的脚本后,它就可以工作了。也许我之前执行恢复操作的脚本缓存在 Azure DevOps 中。我使用的步骤如下:

  1. 从 Azure 应用服务连接字符串获取实时数据库名称
  2. 创建实时数据库的副本(Web 或 Web2,具体取决于当前换入的数据库)
  3. 删除非活动数据库(Web 或 Web2,具体取决于当前换入的数据库)
  4. 将复制的数据库重命名为非实时插槽中的名称
© www.soinside.com 2019 - 2024. All rights reserved.