权限错误创建Amazon RDS上SQL Server数据库的BAK备份



我已经继承了一个在AWS上运行的网站。我想做的是备份SQL Server数据库(在Amazon RDS上(,以便我可以在本地设置开发环境。我有AWS控制台的登录凭证,但我是这个环境中的完整新来者,所以我试图将过程和术语拼凑在一起。

我已经在此处阅读了有关如何启用SQL数据库导入/导出的文档。本指南中有3个设置步骤:

首先,我们需要一个S3存储桶。从控制台我可以看到我们已经有一个称为" sqlbackups"的存储桶,因此看来以前的开发人员已经完成了此过程。

其次,我们需要" AWS身份和访问管理(IAM(角色来访问存储桶"。我通过从"服务"列表中转到" IAM"并从左侧的导航中选择"角色"来检查控制台。我们似乎有一个名为" sql_backrestore_iam"的IAM角色。我假设这是我们需要的,已经由以前的开发人员设置了?

第三,我们需要"添加到db实例上的选项组中的sqlserver_backup_restore选项"。我去过AWS控制台> RDS>选项组,其中一个组称为" custom-option-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或主数据库登录,所以我现在卡住了!

谁能建议我如何获得此备份命令工作?

非常感谢。

我也有同样的问题。

我通过使用RDS Master用户名进行登录并运行备份过程解决了它。

您可以在RDS数据库实例配置选项卡上找到主用户名。

因此,在AWS控制台中:

RD,数据库,选择数据库,配置

如果您不知道主用户名密码,也可以通过在数据库实例视图上单击修改来找到。在设置下设置密码。

来自文档,

https://www.mssqltips.com/sqlservertip/5042/limitations-of-er-sql-sql-server-native-native-native-native-native-backup-and-restore-in-in-amazon-rds/


用户需要在MSDB数据库中的RDS_Backup_database上执行权限。

USE master 
GO 
CREATE LOGIN rds_backup_operator WITH Password = 'somecomplexpassword', DEFAULT_DATABASE=master, 
   CHECK_EXPIRATION=OFF, CHECK_POLICY=OFF 
GO 
USE msdb 
GO 
CREATE USER rds_backup_operator FROM LOGIN rds_backup_operator 
GO 
GRANT EXECUTE ON msdb.dbo.rds_backup_database TO rds_backup_operator 
GO 

希望这会有所帮助!

我在AWS论坛上发布了一个答案,该答案通过使用Active Directory用户/组和一个MSA帐户来运行备份过程。/p>

在下面的示例中,[域 msasqlbackup $]是一个在EC2实例上运行并执行关联备份命令的托管服务帐户。[域 SQL Admins 是一个广告组,是AWS SQL Server RDS提供的内置用户帐户的代理。请注意,带有赠款选项[域 SQL Admins],这是将[admin]用户传达给[domain sql admins] ad group的赠款链所需的,而[domain sql admins] ad group to [domain msasqlbackup $] AD组MSA帐户。没有此步骤,您还需要执行GRANT CREATE ANY DATABASE TO [NewLoginName] WITH GRANT OPTION;GRANT VIEW ANY DATABASE TO [NewLoginName] WITH GRANT OPTION; 执行该管理帐户。这不是首选,因为它(1(不必要地升级了newloginname的特权(2(意味着您在DBA团队中使用基于密码的基于密码的帐户来管理您的AWS SQL SQL Server RDS Instances。

USE master
GO
CREATE LOGIN [DOMAINmsaSqlBackup$] FROM WINDOWS
GO 
 
USE msdb
GO
CREATE USER [DOMAINmsaSqlBackup$] FROM LOGIN [DOMAINmsaSqlbackup$]
GO
GRANT EXECUTE ON msdb.dbo.rds_backup_database TO [DOMAINmsaSqlBackup$] WITH GRANT OPTION [DOMAINSQL Admins]
GO 
GRANT EXECUTE ON msdb.dbo.rds_restore_database TO [DOMAINmsaSqlBackup$] WITH GRANT OPTION [DOMAINSQL Admins]
GO 
GRANT EXECUTE ON msdb.dbo.rds_task_status TO [DOMAINmsaSqlBackup$] WITH GRANT OPTION [DOMAINSQL Admins]
GO 
GRANT EXECUTE ON msdb.dbo.rds_cancel_task TO [DOMAINmsaSqlBackup$] WITH GRANT OPTION [DOMAINSQL Admins]
GO
 
USE name_of_database_to_backup
GO
CREATE USER [DOMAINmsaSqlBackup$] FROM LOGIN [DOMAINmsaSqlBackup$]
GO
ALTER ROLE db_backupoperator ADD MEMBER [DOMAINmsaSqlBackup$]
GO

相关内容

  • 没有找到相关文章

最新更新