如何重命名 SQL Server Amazon RDS 实例上的数据库?

如何重命名 SQL Server Amazon RDS 实例上的数据库?

通过 SQL Server Management Studio 和 Transact SQL 尝试重命名 SQL Server Amazon RDS 实例上托管的数据库会导致以下错误。

用户没有权限更改数据库“Morningstar”,该数据库不存在,或者该数据库未处于允许访问检查的状态。

请注意,这是我尝试过的 Transact SQL 语句。

ALTER DATABASE <OldName> Modify Name = <NewName>;

到目前为止,我想到的最佳选择是使用新名称恢复原始数据库的副本,然后删除原始数据库。请参阅我的StackOverflow 帖子了解有关如何执行此操作的详细信息。

这种方法至少有以下缺点。

  1. bacpac 的导出和导入操作可能需要很长时间。
  2. 任何对数据库执行写入操作的应用程序或网站都需要在整个过程中处于离线状态。
  3. 其中涉及手动步骤,可能会导致错误。
  4. 如果您想要将原始数据库保留在那里作为回滚策略直到新的数据库可用,则 RDS 实例需要足够大以托管数据库的两个副本。

有人能建议一种没有这些缺点的替代方法吗?

更新:我有兴趣重命名托管在 RDS 实例 (而不是 RDS 实例) 中的 SQL Server 数据库。

答案1

RDS 最近添加了一个存储过程来实现这一点:

EXEC rdsadmin.dbo.rds_modify_db_name N'<OldName>', N'<NewName>'

来源:https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Appendix.SQLServer.CommonDBATasks.RenamingDB.html

答案2

在我打开的案例中,AWS 提供了以下信息(释义)。

尽管 master 用户是 db_owner 数据库角色的成员,但数据库重命名需要更改 master 数据库中的 sys.sysdbreg。db_owner 角色的成员身份不提供此权限。

我在问题中描述的解决方法是他们推荐的方法。我已要求确认,没有比我在问题中描述的更简单的方法来从 RDS 复制数据库和将数据库复制到 RDSStackOverflow 帖子

答案3

  1. 连接到 RDS MSSQL 服务器
  2. 以主身份打开新查询窗口。
  3. 复制并粘贴以下查询。

EXEC rdsadmin.dbo.rds_modify_db_name N'OLD Database name', N'New Database Name' GO

  1. 将“旧数据库名称”更改为您现有的数据库名称。
  2. 将“新数据库名称”更改为您想要赋予数据库的名称。

来源: http://mytecksolution.blogspot.com/2017/09/rds-mssql-database-name-change-or-rename.html

相关内容