从 s3 存储桶还原到 sql server 出现错误数据库备份/还原选项未启用

lav*_*ava 6 amazon-web-services

当我尝试从 s3 存储桶恢复时遇到这种错误

- 错误信息

消息 50000,级别 16,状态 0,过程 msdb.dbo.rds_restore_database,第 49 行 [批处理起始行 0]

数据库备份/恢复选项尚未启用或正在启用。请稍后再试。用法:执行 msdb.dbo.rds_restore_database @restore_db_name、@S3_arn_to_restore_from、[@KMS_master_key_arn] @restore_db_name:要恢复的数据库的名称。@S3_arn_to_restore_from :用于从中恢复数据库的备份文件的 S3 ARN。@KMS_master_key_arn :用于解密备份文件的 KMS 客户主密钥 ARN。

--执行代码

exec msdb.dbo.rds_restore_database 
@restore_db_name='C2', 
@s3_arn_to_restore_from='arn:aws:s3:::slkk/31_May_2019_C2.bak'; 
Run Code Online (Sandbox Code Playgroud)

请帮我。我正在使用 aws 免费帐户。如何启用备份还原?

Dar*_*usz 17

转到 IAM 并创建具有权限的新角色,如下所示:

  • AWSBackupServiceRolePolicyForRestores
  • AWSBackupServiceRolePolicyForBackup

在此处输入图片说明

转至 RDS > 选项组

  • 创建组(名称:SqlServerBackupRestore,描述:xxx,引擎:选择您的数据库引擎,主要引擎版本:选择您的数据库实例的版本。
  • 点击创建

在此处输入图片说明

创建组后,单击创建的组的名称进行编辑。

  • 单击添加选项
  • 选择选项:SQLSERVER_BACKUP_RESTORE
  • 选择您在之前的步骤中创建的 IAM 角色
  • 选择立即安排即时更改

在此处输入图片说明

返回 RDS > Databases 并选择您的实例

  • 单击修改
  • 选择您在上一步中创建的选项组

在此处输入图片说明

  • 点击下一步
  • 选择立即应用(它不应导致服务停机)

在此处输入图片说明

  • 通过单击修改数据库实例来应用更改
  • 如果您从 SQL Management Studio 连接到数据库,请关闭并重新连接。

  • 除了开头提到的两个权限之外,我还必须添加 AmazonS3FullAccess。在此之前,我在运行“msdb.dbo.rds_restore_database”时不断收到“访问被拒绝”错误 (3认同)
  • 这么多细节。直到我注意到最后的“...请关闭并再次连接”指令,我才终于开始工作,并且我之前已经在不同 VPC 中的服务器上完成过该过程。谢谢@Dariusz! (2认同)
  • 要创建的角色是针对信任实体“RDS - 将角色添加到数据库”,我还必须添加 S3 访问我的备份文件所在存储桶的策略。 (2认同)

小智 4

我知道这已经很旧了,但我遇到了同样的错误并且能够解决它,所以我想我会分享,因为这个问题没有得到答复。

首先,本文详细介绍了您的需求,因此请确保遵循以下步骤: https ://aws.amazon.com/premiumsupport/knowledge-center/native-backup-rds-sql-server/

我最初已经设置了选项组和所有内容。我错过的步骤是这两个:

  1. 通过在导航窗格中选择数据库,将选项组与数据库实例关联,然后选择要备份的实例。选择操作,然后选择修改。

  2. 在数据库选项下,选择您创建的选项组,然后选择立即应用并继续。查看信息,然后选择修改数据库实例。此选项组修改没有停机时间,因为不需要重新启动实例。

换句话说,您必须使用Option Group在这些步骤中设置的新实例来修改实际的数据库实例。然后,一旦您通过 SSMS 登录到您的实例,您就可以通过执行以下命令来执行恢复(摘自文章):

exec msdb.dbo.rds_restore_database 
    @restore_db_name='database_name', 
    @s3_arn_to_restore_from='arn:aws:s3:::bucket_name/file_name_and_extension';
Run Code Online (Sandbox Code Playgroud)