Sql-Server
如何重命名 SQL Server Amazon RDS 實例上的數據庫?
嘗試通過 SQL Server Management Studio 和 Transact SQL 重命名託管在 SQL Server Amazon RDS 實例上的數據庫會導致以下錯誤。
使用者無權更改數據庫“Morningstar”,數據庫不存在,或數據庫未處於允許訪問檢查的狀態。
請注意,這是我嘗試過的 Transact SQL 語句。
ALTER DATABASE <OldName> Modify Name = <NewName>;
到目前為止,我想出的最佳選擇是使用新名稱恢復原始數據庫的副本,然後刪除原始數據庫。有關如何執行此操作的詳細資訊,請參閱我的StackOverflow 文章。
這種方法至少有以下缺點。
- bacpac 的導出和導入操作可能需要很長時間。
- 任何執行數據庫寫入的應用程序或網站都需要在整個過程中離線。
- 涉及的手動步驟可能會導致錯誤。
- RDS 實例需要足夠大以承載數據庫的兩個副本,如果您想將原始副本保留在那裡作為回滾策略,直到新副本可用。
任何人都可以提出一種沒有這些缺點的替代方法嗎?
**更新:**我有興趣重命名託管在 RDS 實例中的 SQL Server 數據庫 - 而不是 RDS 實例。
RDS 最近添加了一個儲存過程來完成此操作:
EXEC rdsadmin.dbo.rds_modify_db_name N'<OldName>', N'<NewName>'
AWS 在我打開的案例中提供了以下資訊(釋義)。
雖然主使用者是 db_owner 數據庫角色的成員,但數據庫重命名需要更改主數據庫中的 sys.sysdbreg。db_owner 角色中的成員身份不提供此權限。
我在問題中描述的解決方法是他們推薦的方法。我要求確認沒有比我在StackOverflow 文章中描述的更簡單的方法來從 RDS 複製數據庫以及向 RDS 複製數據庫。