【发布时间】:2021-09-26 11:47:49
【问题描述】:
我需要将生产数据库的所有数据移至其暂存版本。 这 2 个数据库是来自 2 个不同资源组的 Azure SQL 数据库。
我已经阅读了一些关于如何实现导出和导入 .bacpac 文件的指南,但是这种方法不允许导入到现有数据库中。
我正在寻找一种无需创建新数据库而是针对现有数据库迁移数据的方法。
【问题讨论】:
我需要将生产数据库的所有数据移至其暂存版本。 这 2 个数据库是来自 2 个不同资源组的 Azure SQL 数据库。
我已经阅读了一些关于如何实现导出和导入 .bacpac 文件的指南,但是这种方法不允许导入到现有数据库中。
我正在寻找一种无需创建新数据库而是针对现有数据库迁移数据的方法。
【问题讨论】:
Azure SQL 数据库没有我们所知道的 SQL Server 上的备份和还原(WITH REPLACE 选项)。我们也无法导出数据库并将其导入现有数据库。
您可以使用新名称导入,然后删除现有数据库,并将导入数据库的名称重命名为已删除数据库的名称。
您还可以使用 Azure SQL Data Sync 的初始同步将所有数据从一个数据库迁移到另一个数据库。您的数据库不仅可以位于不同的资源组中,还可以位于不同的订阅中。初始同步在空数据库上运行得更快。
【讨论】:
如果这是一次性任务,您可以使用 SMMS 导出数据库并将其还原到另一台服务器/新数据库。
您还可以进行 frequest 备份并将它们作为 .bak 存储到 azure 存储帐户并从中恢复。 您可以使用类似于此处给出的自动化运行手册/powershell 脚本:
https://www.powershellgallery.com/packages/Backup-SQLAzureDb/0.2.0
如果两个数据库都在 Azure SQL 上,您可以使用简单的 powershell 命令直接复制到新服务器
New-AzSqlDatabaseCopy -ResourceGroupName "<resourceGroup>" -ServerName $sourceserver -DatabaseName "<databaseName>" `
-CopyResourceGroupName "myResourceGroup" -CopyServerName $targetserver -CopyDatabaseName "CopyOfMySampleDatabase"
New-AzSqlDatabaseCopy -ResourceGroupName "<resourceGroup>" -ServerName $sourceserver -DatabaseName "<databaseName>" `
-CopyResourceGroupName "myResourceGroup" -CopyServerName $targetserver -CopyDatabaseName "CopyOfMySampleDatabase"
或者使用 TSQL 命令的副本:
CREATE DATABASE Database2 AS COPY OF server1.Database1;
【讨论】: