Verwenden von Babelfish als Ziel für AWS Database Migration Service - AWS Database Migration Service

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.

Verwenden von Babelfish als Ziel für AWS Database Migration Service

Mit AWS Database Migration Service können Sie Daten von einer Quelldatenbank in Microsoft SQL Server zu einem Babelfish-Ziel migrieren.

Babelfish for Aurora PostgreSQL erweitert Ihre Amazon Aurora PostgreSQL kompatible Edition-Datenbank um die Möglichkeit, Datenbankverbindungen von Microsoft SQL Server-Clients zu akzeptieren. Dadurch können Anwendungen, die ursprünglich für SQL Server entwickelt wurden, direkt mit Aurora PostgreSQL arbeiten – mit nur wenigen Codeänderungen im Vergleich zu einer herkömmlichen Migration und ohne Änderung der Datenbanktreiber.

Informationen zu den Versionen von Babelfish, die AWS DMS als Ziel unterstützt, finden Sie unter Ziele für AWS DMS. Frühere Versionen von Babelfish in Aurora PostgreSQL erfordern ein Upgrade, damit der Babelfish-Endpunkt verwendet werden kann.

Anmerkung

Der Aurora-PostgreSQL-Zielendpunkt ist die bevorzugte Methode für die Migration von Daten zu Babelfish. Weitere Informationen finden Sie unter Verwenden von Babelfish für Aurora PostgreSQL als Ziel.

Informationen zur Verwendung von Babelfish als Datenbank-Endpunkt finden Sie unter Babelfish for Aurora PostgreSQL im Benutzerhandbuch für Amazon Aurora.

Voraussetzungen für die Verwendung von Babelfish als Ziel für AWS DMS

Sie müssen Ihre Tabellen vor der Migration von Daten erstellen, um sicherzustellen, dass AWS DMS die richtigen Datentypen und Tabellenmetadaten verwendet. Wenn Sie die Tabellen nicht auf dem Ziel erstellen, bevor Sie die Migration ausführen, erstellt AWS DMS die Tabellen möglicherweise mit falschen Datentypen und Berechtigungen. Beispielsweise erstellt AWS DMS eine Zeitstempelspalte stattdessen als binary(8) und bietet nicht die erwartete timestamp/rowversion-Funktionalität.

So können Sie Ihre Tabellen vor der Migration vorbereiten und erstellen
  1. Führen Sie Create-Table-DDL-Anweisungen aus, die alle eindeutigen Einschränkungen, Primärschlüssel oder Standardeinschränkungen enthalten.

    Fügen Sie keine Einschränkungen hinsichtlich Fremdschlüsseln und keine DDL-Anweisungen für Objekte wie Ansichten, gespeicherte Prozeduren, Funktionen oder Auslöser hinzu. Sie können sie nach der Migration Ihrer Quelldatenbank anwenden.

  2. Identifizieren Sie alle Identitätsspalten, berechneten Spalten oder Spalten mit den Datentypen rowversion oder timestamp für Ihre Tabellen. Erstellen Sie anschließend die erforderlichen Transformationsregeln, um bekannte Probleme bei der Ausführung der Migrationsaufgabe zu beheben. Weitere Informationen finden Sie unter Transformationsregeln und Aktionen.

  3. Identifizieren Sie Spalten mit Datentypen, die Babelfish nicht unterstützt. Ändern Sie dann die betroffenen Spalten in der Zieltabelle, sodass sie unterstützte Datentypen verwenden, oder erstellen Sie eine Transformationsregel, durch die sie während der Migrationsaufgabe entfernt werden. Weitere Informationen finden Sie unter Transformationsregeln und Aktionen.

    In der folgenden Tabelle sind Quelldatentypen, die von Babelfish nicht unterstützt werden, und der entsprechende empfohlene Zieldatentyp aufgeführt.

    Quelldatentyp

    Empfohlener Babelfish-Datentyp

    HEIRARCHYID

    NVARCHAR(250)

    GEOMETRY

    VARCHAR(MAX)

    GEOGRAPHY

    VARCHAR(MAX)

So legen Sie Aurora-Kapazitätseinheiten (Aurora Capacity Units, ACUs) für Ihre Quelldatenbank von Aurora PostgreSQL Serverless V2 fest

Sie können die Leistung Ihrer AWS DMS-Migrationsaufgabe vor der Ausführung verbessern, indem Sie den ACU-Mindestwert festlegen.

Nach der Ausführung Ihrer AWS DMS-Migrationsaufgabe können Sie den Mindestwert der ACUs auf einen für Ihre Quelldatenbank von Aurora PostgreSQL Serverless V2 angemessenen Wert zurücksetzen.

Sicherheitsanforderungen bei Verwendung von Babelfish als Ziel für AWS Database Migration Service

Im folgenden Abschnitt werden die Sicherheitsanforderungen bei Verwendung von AWS DMS mit einem Babelfish-Ziel beschrieben:

  • Der Name des Administrator-Benutzers (Admin-Benutzer), mit dem die Datenbank erstellt wurde.

  • PSQL-Login und -Benutzer mit den ausreichenden SELECT-, INSERT-, UPDATE-, DELETE- und REFERENCES-Berechtigungen.

Benutzerberechtigungen für die Verwendung von Babelfish als Ziel für AWS DMS

Wichtig

Aus Sicherheitsgründen muss das für die Datenmigration verwendete Benutzerkonto ein registrierter Benutzer in einer Babelfish-Zieldatenbank sein.

Ihr Babelfish-Zielendpunkt erfordert Mindestbenutzerberechtigungen, um eine AWS DMS-Migration ausführen zu können.

So erstellen Sie einen Login und einen Transact-SQL (T-SQL)-Benutzer mit geringen Berechtigungen
  1. Erstellen Sie einen Login und ein Passwort für die Verbindung mit dem Server.

    CREATE LOGIN dms_user WITH PASSWORD = 'password'; GO
  2. Erstellen Sie die virtuelle Datenbank für Ihren Babelfish-Cluster.

    CREATE DATABASE my_database; GO
  3. Erstellen Sie den T-SQL-Benutzer für Ihre Zieldatenbank.

    USE my_database GO CREATE USER dms_user FOR LOGIN dms_user; GO
  4. Erteilen Sie für jede Tabelle in Ihrer Babelfish-Datenbank GRANT-Berechtigungen für die Tabellen.

    GRANT SELECT, DELETE, INSERT, REFERENCES, UPDATE ON [dbo].[Categories] TO dms_user;

Einschränkungen bei Verwendung von Babelfish als Ziel für AWS Database Migration Service

Die folgenden Einschränkungen gelten, wenn Sie eine Babelfish-Datenbank als Ziel für AWS DMS verwenden:

  • Es wird nur der Tabellenvorbereitungsmodus „Nichts unternehmen“ unterstützt.

  • Der Datentyp ROWVERSION erfordert eine Tabellenzuordnungsregel, die den Spaltennamen während der Migrationsaufgabe aus der Tabelle entfernt.

  • Der Datentyp sql_variant wird nicht unterstützt.

  • Der vollständige LOB-Modus wird unterstützt. Für die Verwendung von SQL Server als Quellendpunkt muss die Einstellung ForceFullLob=True für das SQL-Server-Endpunkt-Verbindungsattribut festgelegt werden, damit LOBs zum Zielendpunkt migriert werden können.

  • Für Einstellungen von Replikationsaufgaben gelten die folgenden Einschränkungen:

    { "FullLoadSettings": { "TargetTablePrepMode": "DO_NOTHING", "CreatePkAfterFullLoad": false, }. }
  • Die Datentypen TIME(7), DATETIME2(7) und DATETIMEOFFSET(7) in Babelfish begrenzen den Präzisionswert für den Sekundenanteil der Zeit auf 6 Ziffern. Ziehen Sie die Verwendung des Genauigkeitswerts 6 für Ihre Zieltabelle in Betracht, wenn Sie diese Datentypen verwenden. Bei den Babelfish-Versionen 2.2.0 und höher ist die siebte Stelle der Präzision bei Verwendung von TIME(7) und DATETIME2(7) immer Null.

  • Im Modus DO_NOTHING prüft DMS, ob die Tabelle bereits vorhanden ist. Wenn die Tabelle nicht im Zielschema vorhanden ist, erstellt DMS die Tabelle auf Grundlage der Quelltabellendefinition und ordnet alle benutzerdefinierten Datentypen ihrem Basisdatentyp zu.

  • Eine AWS DMS-Migrationsaufgabe zu einem Babelfish-Ziel unterstützt keine Tabellen mit Spalten mit den Datentypen ROWVERSION oder TIMESTAMP. Sie können eine Tabellenzuordnungsregel verwenden, die den Spaltennamen während der Übertragung aus der Tabelle entfernt. Im folgenden Beispiel für eine Transformationsregel wird die Tabelle mit dem Namen Actor in Ihrer Quelle so transformiert, dass alle Spalten, die mit den Zeichen col beginnen, aus der Tabelle Actor in Ihrem Ziel entfernt werden.

    { "rules": [{ "rule-type": "selection",is "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "test", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "transformation", "rule-id": "2", "rule-name": "2", "rule-action": "remove-column", "rule-target": "column", "object-locator": { "schema-name": "test", "table-name": "Actor", "column-name": "col%" } }] }
  • Für Tabellen mit Identitäts- oder berechneten Spalten, bei denen die Zieltabellen Namen mit gemischter Groß- und Kleinschreibung wie Kategorien verwenden, müssen Sie eine Transformationsregelaktion erstellen, die die Tabellennamen für Ihre DMS-Aufgabe in Kleinbuchstaben umwandelt. Das folgende Beispiel zeigt, wie Sie die Transformationsregelaktion In Kleinbuchstaben umwandeln mithilfe der AWS DMS-Konsole erstellen. Weitere Informationen finden Sie unter Transformationsregeln und Aktionen.

    Babelfish-Transformationsregel
  • Vor Babelfish Version 2.2.0 beschränkte DMS die Anzahl der Spalten, die Sie auf einen Babelfish-Zielendpunkt replizieren konnten, auf zwanzig (20) Spalten. Mit Babelfish 2.2.0 wurde das Limit auf 100 Spalten erhöht. Mit den Babelfish-Versionen 2.4.0 und höher wird die Anzahl der Spalten, die Sie replizieren können, erneut erhöht. Sie können das folgende Codebeispiel für Ihre SQL-Server-Datenbank ausführen, um zu ermitteln, welche Tabellen zu lang sind.

    USE myDB; GO DECLARE @Babelfish_version_string_limit INT = 8000; -- Use 380 for Babelfish versions before 2.2.0 WITH bfendpoint AS ( SELECT [TABLE_SCHEMA] ,[TABLE_NAME] , COUNT( [COLUMN_NAME] ) AS NumberColumns , ( SUM( LEN( [COLUMN_NAME] ) + 3) + SUM( LEN( FORMAT(ORDINAL_POSITION, 'N0') ) + 3 ) + LEN( TABLE_SCHEMA ) + 3 + 12 -- INSERT INTO string + 12) AS InsertIntoCommandLength -- values string , CASE WHEN ( SUM( LEN( [COLUMN_NAME] ) + 3) + SUM( LEN( FORMAT(ORDINAL_POSITION, 'N0') ) + 3 ) + LEN( TABLE_SCHEMA ) + 3 + 12 -- INSERT INTO string + 12) -- values string >= @Babelfish_version_string_limit THEN 1 ELSE 0 END AS IsTooLong FROM [INFORMATION_SCHEMA].[COLUMNS] GROUP BY [TABLE_SCHEMA], [TABLE_NAME] ) SELECT * FROM bfendpoint WHERE IsTooLong = 1 ORDER BY TABLE_SCHEMA, InsertIntoCommandLength DESC, TABLE_NAME ;

Zieldatentypen für Babelfish

In der folgenden Tabelle sind die bei Verwendung von AWS DMS unterstützten Babelfish-Zieldatentypen sowie die Standardzuordnung von AWS DMS-Datentypen aufgeführt.

Weitere Informationen zu AWS DMS-Datentypen finden Sie unter Datentypen für den AWS Database Migration Service.

AWS DMS-Datentyp

Babelfish-Datentyp

BOOLEAN

TINYINT

BYTES

VARBINARY (Länge)

DATUM

DATUM

TIME

TIME

INT1

SMALLINT

INT2

SMALLINT

INT4

INT

INT8

BIGINT

NUMERIC

NUMERIC (p,s)

REAL4

REAL

REAL8

FLOAT

STRING

Wenn die Spalte eine Datums- oder Zeitspalte ist, gehen Sie wie folgt vor:

  • Verwenden Sie für SQL Server 2008 und höher DATETIME2.

  • Verwenden Sie für frühere Versionen, wenn die Skalierung 3 oder weniger ist, DATETIME. Verwenden Sie in allen anderen Fällen VARCHAR (37).

Wenn die Spalte keine Datums- oder Zeitspalte ist, verwenden Sie VARCHAR (Länge).

UINT1

TINYINT

UINT2

SMALLINT

UINT4

INT

UINT8

BIGINT

WSTRING

NVARCHAR(Länge)

BLOB

VARBINARY(max)

Wenn Sie diesen Datentyp mit DMS verwenden möchten, müssen Sie die Verwendung von BLOBs für eine bestimmte Aufgabe aktivieren. DMS unterstützt BLOB-Datentypen nur in Tabellen, die einen Primärschlüssel enthalten.

CLOB

VARCHAR(max)

Wenn Sie diesen Datentyp mit DMS verwenden möchten, müssen Sie die Verwendung von CLOBs für eine bestimmte Aufgabe aktivieren.

NCLOB

NVARCHAR(max)

Wenn Sie diesen Datentyp mit DMS verwenden möchten, müssen Sie die Verwendung von NCLOBs für eine bestimmte Aufgabe aktivieren. Bei CDC unterstützt DMS NCLOB-Datentypen nur in Tabellen, die einen Primärschlüssel enthalten.