Amazon AWS 上的 MS SQL Express 2016:我可以将数据库脱机,但不能将其联机

The*_*ner 9 sql-server permissions ssms sql-server-2016 amazon-rds

我可以使数据库脱机(通过 GUI),但不能使它们重新联机。服务器详细信息如下:

RDBMS:MS SQL 2016 Express 主机:Amazon AWS/RDS 免费套餐

问题的详细信息/历史 几个月前,我在 Amazon AWS 上创建了一个数据库实例,在创建时,“主/管理员”帐户是通过 AWS/RDS 网页设置的。使用这个“管理员”帐户,我在该实例上创建了多个数据库,没有任何问题。

在过去的几个月里,我使用这个“管理员”帐户将几个数据库更改为包含的数据库。我这样做是为了我可以设置包含的用户。我也在这个服务器实例上用相同的管理员帐户做过几次,没有任何问题。

昨晚,我刚刚通过这个管理员帐户创建了一个新数据库。然后我尝试将此新数据库设置为包含的数据库,但该过程失败了。对话框错误消息中指出“请稍后再试”。

在第三次尝试失败后,我决定使数据库脱机(通过 SSMS 中的 GUI)。我这样做是为了强制关闭可能在这个新数据库上的任何可能打开的进程或连接。那奏效了。但是,我无法将其重新联机。我已经通过 GUI 和查询尝试过,但它一直失败。

然后我检查了分配给这个“管理员”帐户的服务器角色。它不是sysadmin角色的一部分。据我了解,'sysadmin' 角色可以在 db 实例上做任何事情。我认为我的管理员帐户不属于此系统管理员角色,因为它适用于 Amazon AWS 的内部 DBA。我试图将其添加为系统管理员,但失败了。

为确保我的“管理员”帐户有问题,我将另一个数据库脱机(它是空的)。它离线了,但也无法重新上线。

可能是什么问题呢?请帮忙。请注意,我的技能水平非常低,我正在学习。

服务器日志没有显示任何有用的信息。我附上了截图。

在 SSMS 中使数据库联机时出错

使数据库联机错误

从 SSMS 查看 SQL Server 错误日志时出错

2. SQL Server 日志

登录权限

3. 我的管理员账户的服务器角色

将登录名添加到 sysadmin 角色时出错

4. 无法将 SysAdmin 角色添加到 Admin 帐户

1

AMt*_*two 16

您是对的:您的管理员帐户不是sysadmin,而是功能较弱的帐户。这是必要的,以确保 AWS 能够限制您对此实例做任何事情,并逃避安全边界。

在线设置数据库

作为管理员帐户的一部分,您可以将数据库设置为脱机,但将数据库重新联机需要sysadmin(您没有)。为了解决此权限限制,AWS 提供了一个存储过程来使数据库联机。您需要使用数据库中的rds_set_database_online过程rdsadmin

EXEC rdsadmin.dbo.rds_set_database_online 'MyOfflineDatabase'; 
Run Code Online (Sandbox Code Playgroud)

AWS在此处完整记录了此过程。

读取错误日志

同样,您不能xp_readerrorlog在 RDS SQL Server 上使用,因为它需要sysadmin. 相反,AWS 提供了存储过程rds_read_error_log

EXEC rdsadmin.dbo.rds_read_error_log;
Run Code Online (Sandbox Code Playgroud)

AWS在此处完整记录了此过程。