Sql-Server

如何重命名 SQL Server Amazon RDS 實例上的數據庫?

  • May 1, 2018

嘗試通過 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 實例中的 SQL Server 數據庫 - 而不是 RDS 實例。

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

AWS 在我打開的案例中提供了以下資訊(釋義)。

雖然主使用者是 db_owner 數據庫角色的成員,但數據庫重命名需要更改主數據庫中的 sys.sysdbreg。db_owner 角色中的成員身份不提供此權限。

我在問題中描述的解決方法是他們推薦的方法。我要求確認沒有比我在StackOverflow 文章中描述的更簡單的方法來從 RDS 複製數據庫以及向 RDS 複製數據庫。

引用自:https://serverfault.com/questions/555249