Wie benenne ich eine Datenbank auf einer SQL Server Amazon RDS-Instanz um?

8

Versuche über SQL Server Management Studio und Transact SQL, eine auf einer SQL Server Amazon RDS-Instanz gehostete Datenbank umzubenennen, führen zu folgendem Fehler.

Der Benutzer hat keine Berechtigung zum Ändern der Datenbank 'Morningstar', die Datenbank existiert nicht oder die Datenbank befindet sich nicht in einem Zustand, der Zugriffsprüfungen zulässt.

Beachten Sie, dass dies die Transact SQL-Anweisung ist, die ich ausprobiert habe.

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

Die beste Option, die ich bisher gefunden habe, besteht darin, eine Kopie der Originaldatenbank mit dem neuen Namen wiederherzustellen und dann das Original zu löschen. Weitere Informationen hierzu finden Sie in meinem StackOverflow-Beitrag .

Dieser Ansatz weist mindestens die folgenden Nachteile auf.

  1. Die Export- und Importvorgänge für einen Bacpac können lange dauern.
  2. Alle Anwendungen oder Websites, die Schreibvorgänge in die Datenbank ausführen, müssen während des gesamten Vorgangs offline geschaltet werden.
  3. Es sind manuelle Schritte erforderlich, die zu Fehlern führen können.
  4. Die RDS-Instanz muss groß genug sein, um zwei Kopien der Datenbank zu hosten, wenn Sie das Original als Rollback-Strategie dort belassen möchten, bis die neue verfügbar ist.

Kann jemand einen alternativen Ansatz vorschlagen, der diese Nachteile nicht aufweist?

Update: Ich möchte eine SQL Server-Datenbank umbenennen, die in einer RDS-Instanz gehostet wird - nicht in der RDS-Instanz.

Scott Munro
quelle
Haben Sie diesen Fehler gegoogelt, die aws-Foren überprüft und die Eins-zu-eins-aws-Unterstützung ausprobiert? Existiert die Datenbank, hat Ihr Benutzer die richtigen Berechtigungen? Können Sie es mit dem Root-Konto versuchen? Ich weiß, dass dies mit MySQL trivial ist, habe aber mssql
Drew Khoury
Ich habe den AWS-Support noch nicht ausprobiert, werde aber einen Fall eröffnen. Die Datenbank ist vorhanden und der Benutzer ist Mitglied der Rolle db_owner, was ausreichen sollte. Ich verwende den RDS-Hauptbenutzer. Ich denke, was Sie unter "Root-Konto" verstehen.
Scott Munro
Ich habe einen Fall eröffnet und einen Screenshare mit einem AWS-Supportmitarbeiter durchgeführt. Wir konnten eine Datenbank nicht umbenennen, ohne den oben beschriebenen Fehler zu erhalten. Er untersucht weiter.
Scott Munro
Viel Glück! Wenn Sie die Antwort finden, können Sie sie hier als Antwort veröffentlichen, damit andere davon profitieren können :)
Drew Khoury

Antworten:

9

RDS hat kürzlich eine gespeicherte Prozedur hinzugefügt, um dies zu erreichen:

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

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

Patadactyl
quelle
Wie lange dauert es normalerweise, bis die Namensänderung wirksam wird?
Anthony Kong
1
@AnthonyKong es ist sofort (wenn es erfolgreich war). Möglicherweise müssen Sie Ihre Datenbankliste in SSMS aktualisieren, um die Änderung zu sehen.
bsplosion
1

AWS hat die folgenden Informationen für den Fall bereitgestellt, dass ich geöffnet habe (umschrieben).

Obwohl der Hauptbenutzer Mitglied der Datenbankrolle db_owner ist, erfordert eine Datenbankumbenennung eine Änderung in sys.sysdbreg, die sich in der Hauptdatenbank befindet. Die Mitgliedschaft in der Rolle "db_owner" bietet diese Berechtigung nicht.

Die Problemumgehung, die ich in meiner Frage beschrieben habe, ist die Methode, die sie empfehlen würden. Ich habe um Bestätigung gebeten, dass es kein einfacheres Mittel zum Kopieren von Datenbanken von und nach RDS gibt als das, das ich in meinem StackOverflow-Beitrag beschrieben habe .

Scott Munro
quelle
1
  1. Stellen Sie eine Verbindung zum RDS MSSQL-Server her
  2. Öffnen Sie das Fenster Neue Abfrage als Master.
  3. Kopieren Sie die folgende Abfrage und fügen Sie sie ein.

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

  1. Ändern Sie den 'ALTEN Datenbanknamen' als Ihren vorhandenen Datenbanknamen.
  2. Ändern Sie den 'Neuen Datenbanknamen' als Namen, den Sie der Datenbank geben möchten.

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

user438456
quelle