Назад | Перейти на главную страницу

Как переименовать базу данных на экземпляре 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. Операции по экспорту и импорту бакпака могут занять много времени.
  2. Любые приложения или веб-сайты, выполняющие запись в базу данных, необходимо будет отключить в течение всего процесса.
  3. Есть ручные шаги, которые могут привести к ошибкам.
  4. Экземпляр RDS должен быть достаточно большим для размещения двух копий базы данных, если вы хотите оставить там оригинал в качестве стратегии отката, пока не станет доступна новая.

Может ли кто-нибудь предложить альтернативный подход, у которого нет этих недостатков?

Обновить: Меня интересует переименование базы данных SQL Server, размещенной в экземпляре RDS, а не в экземпляре 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 не дает этого разрешения.

Обходной путь, который я описал в своем вопросе, - это метод, который они рекомендовали бы. Я попросил подтвердить, что нет более простого средства копирования баз данных из и в RDS, чем тот, который я описал в своем Сообщение на StackOverflow.

  1. Подключиться к серверу RDS MSSQL
  2. Откройте окно нового запроса как главное.
  3. Скопируйте и вставьте запрос ниже.

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

  1. Измените «OLD database Name» на имя существующей базы данных.
  2. Измените «Новое имя базы данных» на имя, которое вы хотите дать базе данных.

Источник: http://mytecksolution.blogspot.com/2017/09/rds-mssql-database-name-change-or-rename.html