Beheben von Unterschieden in der Objekteigentümerschaft nach dem Upgrade - Amazon Aurora

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Beheben von Unterschieden in der Objekteigentümerschaft nach dem Upgrade

Die Babelfish-Versionen 4.6 und höher sowie 5.2 und höher beinhalten eine Änderung der Verwaltung der Objekteigentümerschaft über den TDS-Endpunkt. Wenn Sie neue Objekte über den TDS-Endpunkt erstellen, gehören diese Objekte nun dem Eigentümer des Schemas und nicht mehr dem aktuellen Benutzer. Diese Änderung der Eigentümerschaft kann sich auf das Verhalten der Berechtigungen für neue Objekte im Vergleich zu vorhandenen Objekten auswirken, wenn Sie ein Upgrade von Versionen vor 4.6 oder 5.2 durchführen.

Zum Beheben dieser Unterschiede in der Eigentümerschaft bietet Babelfish die Funktion sys.generate_alter_ownership_statements(). Diese Funktion generiert SQL-Anweisungen, die sicherstellen, dass Objekt- und Schemaeigentümerschaft übereinstimmen.

Beachten Sie folgende Einschränkungen beim Umgang mit der Objekteigentümerschaft:

  • Benutzer mit CREATE-Berechtigungen, die über den PostgreSQL-Endpunkt erteilt wurden, können in diesen Schemas keine Objekte über den TDS-Endpunkt erstellen.

  • Das Ändern von Berechtigungen für T-SQL-Objekte über den PostgreSQL-Endpunkt wird nicht empfohlen und kann zu falschem T-SQL-Verhalten führen.

  • Die Zugriffsberechtigungen können zwischen alten und neuen Objekten variieren, wenn deren Eigentümerschaft nicht übereinstimmt. Beispielsweise kann ein Schema, das sch_own gehört, Objekte enthalten, die dbo gehören. In diesem Fall verfügen Objekte, die dbo gehören und vor dem Upgrade erstellt wurden, möglicherweise über andere Zugriffsberechtigungen als Objekte, die sch_own gehören und nach dem Upgrade erstellt wurden. Dies kann sich auf Operationen wie SELECT und INSERT auswirken.

Wenn Ihr DB-Cluster Objekte enthält, die in Babelfish-Versionen vor 4.6 oder 5.2 erstellt wurden, sollten Sie erwägen, deren Eigentümerschaft anzugleichen.

So beheben Sie Unterschiede in der Objekteigentümerschaft
  1. Stellen Sie über den PostgreSQL-Endpunkt eine Verbindung zur babelfish_db-Datenbank in Ihrem DB-Cluster her.

  2. Führen Sie den folgenden Befehl aus:

    SELECT * from sys.generate_alter_ownership_statements();

    Dadurch wird eine Liste von SQL-Anweisungen generiert, mit denen die Eigentümerschaft der Objekte standardisiert werden soll.

  3. Führen Sie die generierten Anweisungen zunächst in einer Testumgebung aus, um ihre Wirkung zu überprüfen, bevor Sie sie auf Ihre Produktionsumgebung anwenden.

Wir empfehlen, dass Sie diese Anweisungen ausführen, um ein konsistentes Objekteigentümerschaftsmodell in Ihrer gesamten Datenbank zu erreichen.