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
-
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.
-
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.
-
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.
-
Legen Sie im Fenster mit den Kapazitätseinstellungen für Severless v2 die Option Minimum-ACUs auf
2
oder einen für Ihren Aurora-DB-Cluster angemessenen Wert fest.Weitere Informationen zum Festlegen von Aurora-Kapazitätseinheiten finden Sie unter Auswählen des Aurora-Serverless-v2-Kapazitätsbereichs für einen Aurora-Cluster im Benutzerhandbuch für Amazon Aurora.
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
-
Erstellen Sie einen Login und ein Passwort für die Verbindung mit dem Server.
CREATE LOGIN dms_user WITH PASSWORD =
'password'
; GO -
Erstellen Sie die virtuelle Datenbank für Ihren Babelfish-Cluster.
CREATE DATABASE my_database; GO
-
Erstellen Sie den T-SQL-Benutzer für Ihre Zieldatenbank.
USE my_database GO CREATE USER dms_user FOR LOGIN dms_user; GO
-
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 Zeichencol
beginnen, aus der TabelleActor
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.
-
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:
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. |