Попытки через SQL Server Management Studio и Transact SQL переименовать базу данных, размещенную на экземпляре SQL Server Amazon RDS, приводят к следующей ошибке.
У пользователя нет разрешения на изменение базы данных «Morningstar», база данных не существует или база данных не находится в состоянии, позволяющем проводить проверки доступа.
Обратите внимание, что это оператор Transact SQL, который я пробовал.
ALTER DATABASE <OldName> Modify Name = <NewName>;
Наилучший вариант, который я придумал, - это восстановить копию исходной базы данных с новым именем, а затем удалить оригинал. Смотри мой Сообщение на StackOverflow для получения подробной информации о том, как это сделать.
У этого подхода есть по крайней мере следующие недостатки.
Может ли кто-нибудь предложить альтернативный подход, у которого нет этих недостатков?
Обновить: Меня интересует переименование базы данных SQL Server, размещенной в экземпляре RDS, а не в экземпляре RDS.
RDS недавно добавил для этого хранимую процедуру:
EXEC rdsadmin.dbo.rds_modify_db_name N'<OldName>', N'<NewName>'
AWS предоставила следующую информацию в случае, который я открыл (перефразировал).
Хотя главный пользователь является членом роли базы данных db_owner, переименование базы данных требует изменения sys.sysdbreg, который находится в главной базе данных. Членство в роли db_owner не дает этого разрешения.
Обходной путь, который я описал в своем вопросе, - это метод, который они рекомендовали бы. Я попросил подтвердить, что нет более простого средства копирования баз данных из и в RDS, чем тот, который я описал в своем Сообщение на StackOverflow.
EXEC rdsadmin.dbo.rds_modify_db_name N'OLD Database name', N'New Database Name'
GO
Источник: http://mytecksolution.blogspot.com/2017/09/rds-mssql-database-name-change-or-rename.html