Babelfish als Ziel verwenden 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.

Babelfish als Ziel verwenden für AWS Database Migration Service

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

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 Versionen von Babelfish, die als Ziel AWS DMS unterstützt werden, 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 erstellen, bevor Sie Daten migrieren, um sicherzustellen, dass die richtigen Datentypen und Tabellenmetadaten AWS DMS verwendet werden. Wenn Sie Ihre Tabellen nicht auf dem Ziel erstellen, bevor Sie die Migration ausführen, werden die Tabellen AWS DMS möglicherweise mit falschen Datentypen und Berechtigungen erstellt. AWS DMS Erstellt beispielsweise stattdessen eine Zeitstempelspalte als Binärdatei (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 die Aurora-Kapazitätseinheiten (ACUs) für Ihre Aurora PostgreSQL Serverless V2-Quelldatenbank fest

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

Nachdem Sie Ihre AWS DMS Migrationsaufgabe ausgeführt haben, können Sie den Mindestwert Ihres ACUs auf ein angemessenes Niveau für Ihre Aurora PostgreSQL Serverless V2-Quelldatenbank zurücksetzen.

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

Im Folgenden werden die Sicherheitsanforderungen für die Verwendung AWS DMS mit einem Babelfish-Target 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 der 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 sie zum Zielendpunkt migriert werden kann.

  • 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 Genauigkeitswert 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 Babelfish-Versionen 2.2.0 und höher ist bei Verwendung von TIME (7) und DATETIME2 (7) die siebte Stelle der Genauigkeit 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, die die Datentypen ROWVERSION oder TIMESTAMP verwenden. 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 die Transformationsregelaktion „Kleinbuchstaben erstellen“ mithilfe der Konsole erstellt wird. AWS DMS 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

Die folgende Tabelle zeigt die Babelfish-Zieldatentypen, die bei der Verwendung unterstützt werden, AWS DMS und die Standardzuweisung von Datentypen. AWS DMS

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)

Um diesen Datentyp mit DMS zu verwenden, 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)

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

NCLOB

NVARCHAR(max)

Um diesen Datentyp mit DMS zu verwenden, 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.