Sha*_*dat 6 sql-server backup restore amazon-rds
我有两个具有相同 file_guid 的数据库。尝试在 Amazon RDS 中恢复第二个数据库时出现以下错误。
由于任务失败或并发 RESTORE_DB 请求而中止任务。任务 ID 8 (RESTORE_DB) 异常:无法还原数据库 DATABASENAME,因为实例上已有一个具有相同 file_guids 的现有数据库。
这是因为我已经恢复了另一个具有相同 file_guid 但不同 physical_name 的数据库,这是 Amazon RDS 的限制。如果有兴趣,请在此处和此处找到详细信息。
如何更新 sys.database_files 记录?
我们必须做同样的事情——因为我们想将一个数据库复制到一个新数据库,同时更改名称和文件 ID。
我们发现此处发布的原始过程不可重复,我想这取决于原始文件 ID 的创建方式。无论如何,我已经更新了以下程序,这是可重复的。
使用标准 RDS 数据库备份将数据库从 RDS 备份到 S3。
exec msdb.dbo.rds_backup_database
@source_db_name = '<database-name>',
@s3_arn_to_backup_to = 'arn:aws:s3:::<bucket-name>/<backup-filename>'
Run Code Online (Sandbox Code Playgroud)将 .bak 文件还原到本地计算机上的 SQL Server。我们有 MSDN 帐户,所以我们刚刚下载并安装了 SQL 2016,让我们可以完全访问本地机器上的 SQL。但是,我相信您可以下载 SQL Express 并执行相同的操作,根据 SQL 引擎的源版本,某些功能可能会丢失。
为数据库执行导出数据层应用程序。这将创建一个 .bacpac 文件,其中包括架构、数据和代码(存储过程等)。
删除在步骤 3 中导入 SQL Server 的原始数据。
执行导入数据层应用程序并指向在步骤 3 中创建的 .bacpac 文件。此步骤将设置文件 guids = _Data 和 _Logs,使它们唯一。
执行完整备份以获取新的 .bak 文件。
将新的 .bak 文件上传到 S3 并执行标准的 RDS 数据库导入。
exec msdb.dbo.rds_restore_database
@restore_db_name = '<database-name>',
@s3_arn_to_restore_from = 'arn:aws:s3:::<bucket-name>/<backup-filename>'
Run Code Online (Sandbox Code Playgroud) 归档时间: |
|
查看次数: |
6560 次 |
最近记录: |