【发布时间】:2019-05-24 11:46:41
【问题描述】:
我继承了一个在 AWS 上运行的网站。我想要做的是备份 SQL Server 数据库(位于 Amazon RDS 上),以便我可以在本地设置开发环境。我有 AWS 控制台的登录凭据,但我是这个环境中的新手,所以我试图将流程和术语拼凑起来。
我已经阅读了docs here,了解如何启用 SQL 数据库的导入/导出。本指南中有 3 个设置步骤:
首先,我们需要一个 S3 存储桶。我从控制台看到我们已经有一个名为“sqlbackups”的存储桶,所以看起来以前的开发人员已经完成了这个过程。
其次,我们需要“一个 AWS Identity and Access Management (IAM) 角色来访问存储桶”。我通过从“服务”列表中转到“IAM”并从左侧导航中选择“角色”来检查控制台。我们似乎有一个名为“SQL_BackRestore_IAM”的 IAM 角色。我假设这是我们需要的,已经由之前的开发人员设置了吗?
第三,我们需要“将 SQLSERVER_BACKUP_RESTORE 选项添加到您的数据库实例上的选项组中。”。我去了 AWS 控制台 > RDS > 选项组,那里有一个名为“custom-option-group-for-sql-express-v11”的组,其中有“SQLSERVER_BACKUP_RESTORE”作为选项。所以,再一次,这看起来已经设置好了。
所以现在我认为我需要登录到实际的 SQL Server 并运行命令来调用存储过程来创建 .bak 备份。因此,我使用网站 web.config 文件中的凭据登录数据库并执行以下操作:
exec msdb.dbo.rds_backup_database
@source_db_name='ExampleDBName',
@s3_arn_to_backup_to='arn:aws:s3:::sqlbackups/ExampleDBName.bak',
@type='FULL';
但是,我现在收到一个错误:
The EXECUTE permission was denied on the object 'rds_backup_database', database 'msdb', schema 'dbo'
可能与数据库登录没有执行备份的权限有关。我没有获得任何类型的 sa 或 master 数据库登录,所以我现在卡住了!
谁能建议我如何让这个备份命令工作?
非常感谢。
【问题讨论】:
-
您应该与拥有该数据库的 DBA 交谈。如果数据库是“继承”的一部分,那么您应该与遗赠给您的人交谈,因为拥有 SA 访问权限是拥有数据库的一部分。
-
我不相信他们是 RDS 中的“sa”角色,或者至少它通过服务的托管部分被混淆了,这是我困惑的一部分。我读过有一个“主人”的角色,但我又有点困惑,我是否应该去看看。我希望具有良好 RDA 知识的人能够肯定地知道。应该可以在 AWS 控制台中重置主账户详细信息,因此最终我确实可以控制,但我不知道这是否会破坏事情。我宁愿创建一个具有备份权限的新用户,但我不知道从哪里开始。
-
称它为“master”,称它为“SA”,称它为“Blue Banana”——拥有数据库的人需要对其拥有完全且无限制的访问权限。如果您没有携带该访问权限的凭据,那么您需要与确实拥有这些凭据的任何人交谈。
标签: sql-server amazon-web-services amazon-rds