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.
Auswahlregeln bei der DMS-Schemakonvertierung
Die DMS-Schemakonvertierung konvertiert Datenbankschemas von einer Engine in eine andere. Mithilfe von Auswahlregeln steuern Sie, auf welche Datenbankobjekte DMS Schema Conversion bei Vorgängen wie Bewertung, Konvertierung und Export reagiert. Eine Auswahlregel ist ein JSON-Objekt, das Sie über den SelectionRules Parameter (oder --selection-rules in der AWS CLI) übergeben. Ohne eine Auswahlregel hat eine Operation nichts, worauf sie reagieren könnte. Mit einer Regel können Sie den Vorgang auf ein einzelnes Objekt, ein ganzes Schema, eine gesamte Datenbank (für Microsoft SQL Server- und SAP ASE- (Sybase ASE) -Quellen) oder eine Gruppe von Objekten beschränken, denen ein Muster entspricht.
Anmerkung
Wenn Sie die AWS Management Console verwenden, erstellt DMS Schema Conversion automatisch Auswahlregeln auf der Grundlage Ihrer Einstellungen in der Benutzeroberfläche des Migrationsprojekts. Sie müssen Auswahlregeln nur direkt schreiben, wenn Sie die DMS-Schemakonvertierung API oder AWS CLI verwenden.
Sie verwenden dieselbe Regelform sowohl auf der Quell- als auch auf der Zielseite eines Migrationsprojekts. Das server-name Feld im Object Locator gibt an, ob die Regel auf den Quelldatenanbieter oder den Zieldatenanbieter abzielt. Ein einzelnes Migrationsprojekt verwendet üblicherweise beide Arten von Regeln: Quellregeln für die Bewertung und Konvertierung; Zielregeln für den SQL-Export.
Format der Auswahlregeln
Ein Dokument mit Auswahlregeln ist ein JSON-Objekt mit einem einzigen rules Array. Jeder Eintrag im Array ist eine Regel, und jede Regel muss alle der folgenden Felder enthalten.
| Parameter | Wert | Description |
|---|---|---|
rule-type |
selection |
Ein Wert, der den Regeltyp identifiziert. Setzen Sie diesen Wert für alle Auswahlregeln aufselection. Erforderlicher Parameter. |
rule-id |
Ein numerischer Wert (Ganzzahl). | Ein eindeutiger numerischer Bezeichner für die Regel. Erforderlicher Parameter. |
rule-name |
Ein alphanumerischer Wert. | Ein eindeutiger Name zur Identifizierung der Regel. Erforderlicher Parameter. |
rule-action |
explicit, include oder exclude |
Ein Wert, der bestimmt, wie der Objektlocator interpretiert wird. Siehe Regelaktionen. Erforderlicher Parameter. |
object-locator |
Ein JSON-Objekt, das Engine-spezifische Locator-Schlüssel enthält. | Ein Objekt, das die Datenbankobjekte identifiziert, für die die Regel gilt. Siehe Objekt-Locator-Hierarchie. Erforderlicher Parameter. |
Das folgende Minimalbeispiel zielt auf ein Schema auf einem Quellserver ab.
{ "rules": [ { "rule-type": "selection", "rule-id": "1", "rule-name": "rule_name", "rule-action": "explicit", "object-locator": { "server-name": "source_server", "schema-name": "schema_name" } } ] }
Anmerkung
Wenn Sie die AWS CLI verwenden, können Sie die Auswahlregeln auf folgende Weise übergeben. Dies ist eine AWS Standard-CLI-Funktion, die mit jedem Zeichenkettenparameter funktioniert.
-
Inline:
--selection-rules '{"rules":[...]}'(Verwenden Sie einfache Anführungszeichen, um zu vermeiden, dass die doppelten JSON-Anführungszeichen maskiert werden) -
Relativer Pfad:
--selection-rules file://example-rules.json -
Absoluter Pfad:
--selection-rules file:///tmp/example-rules.json
Alle darin enthaltenen Feldwerte object-locator dürfen keine leeren Zeichenketten sein. Eine leere Zeichenfolge (z. B."schema-name": "") wird mit dem Fehler zurückgewiesen.
Anmerkung
Der database-name Schlüssel ist nur für Microsoft SQL Server- und SAP ASE- (Sybase ASE) -Quellen gültig. Das Senden database-name eines Locators für eine andere Quell-Engine wird als nicht unterstützter Schlüssel abgelehnt.
Schreiben von Regeln
Objekt-Locator-Hierarchie
Der object-locator identifiziert ein oder mehrere Datenbankobjekte anhand einer Hierarchie von Engine-spezifischen Schlüsseln. Jeder Schlüssel schränkt den Bereich ein. Lassen Sie einen Schlüssel auf niedrigerer Ebene weg, um den Bereich zu erweitern. Die Hierarchie hängt von der Quell-Engine ab:
-
Microsoft SQL Server und SAP ASE (Sybase ASE) — Schlüssel
server-name→database-name→schema-name→auf Objektebene (z. B.).table-nameDiese Engines verfügen über eine zusätzlichedatabase-nameEbene zwischen dem Server und dem Schema. -
Alle anderen Engines (Oracle, IBM Db2 for z/OS und alle Ziel-Engines: PostgreSQL, Aurora PostgreSQL, MySQL, Aurora MySQL und IBM Db2 LUW) — Schlüssel auf Objektebene.
server-name→schema-name→Diese Engines haben keinedatabase-nameEbene; das Schema ist der oberste Container, der sich direkt darunter befindet.server-name
Im folgenden Beispiel wird eine bestimmte Microsoft SQL Server-Tabelle ausgewählt.
{ "rules": [ { "rule-type": "selection", "rule-id": "1", "rule-name": "rule_name", "rule-action": "explicit", "object-locator": { "server-name": "source_server", "database-name": "database_name", "schema-name": "schema_name", "table-name": "table_name" } } ] }
Um den Gültigkeitsbereich auf das gesamte Schema auszudehnen, lassen Sie den Schlüssel auf der Blattebene weg. Die Regel gilt dann für alle adressierbaren Objekttypen in diesem Schema, einschließlich Tabellen, Ansichten, Prozeduren, Funktionen, Sequenzen und aller anderen Objekte, die die Quell-Engine verfügbar macht.
{ "rules": [ { "rule-type": "selection", "rule-id": "1", "rule-name": "rule_name", "rule-action": "explicit", "object-locator": { "server-name": "source_server", "database-name": "database_name", "schema-name": "schema_name" } } ] }
Die Locator-Schlüssel, die Sie verwenden können, hängen von der Quell- oder Ziel-Engine ab. Die vollständige Schlüsselreferenz pro Engine finden Sie unterObjektlocator-Schlüssel nach Datenbank.
Quellregeln und Zielregeln
Kein explizites rule-type Feld kennzeichnet eine Regel als „Quelle“ oder „Ziel“. Sie steuern die Unterscheidung ausschließlich über den server-name Wert inobject-locator: Wenn der Wert mit Ihrem Quelldatenanbieter server-name übereinstimmt, zielt die Regel auf den Quellmetadatenbaum ab. Wenn er mit Ihrem Zieldatenanbieter übereinstimmt, zielt die Regel auf den Ziel-Metadatenbaum ab.
Denn server-name Sie können entweder Folgendes verwenden:
-
Der im Datenprovider konfigurierte Wert für den Servernamen. In der Regel handelt es sich dabei um einen Hostnamen oder eine IP-Adresse, die jedoch exakt mit dem im Datenanbieter gespeicherten Wert übereinstimmen muss — es handelt sich nicht um einen anderen DNS-Namen oder eine andere IP-Adresse, die auf denselben Computer aufgelöst wird.
-
Die Ressourcen-ID des Datenproviders — das letzte Segment seines ARN (wenn der ARN beispielsweise ist
arn:aws:dms:us-east-1:111122223333:data-provider:EXAMPLEABCDEFGHIJKLMNOPQRS, ist die Ressourcen-IDEXAMPLEABCDEFGHIJKLMNOPQRS).
Regelaktionen
Verwenden Sie das rule-action Feld, um anzugeben, wie die DMS-Schemakonvertierung die Werte im Objektlocator interpretiert. Sie können Platzhalter nur mit und verwenden. include exclude
Wert |
Behavior |
Verwendung |
|---|---|---|
|
Wählt alle Objekte aus, deren Namen dem Muster entsprechen. Unterstützt |
Wird verwendet, um einer Gruppe von Objekten ein gemeinsames Benennungsmuster zuzuordnen. |
|
Entfernt Objekte aus dem Satz, der bereits nach den vorherigen |
Wird verwendet, um Ausnahmen aus einer umfassenderen |
|
Wählt genau das benannte Objekt aus. Jeder Locator-Wert, einschließlich |
Verwenden Sie diese Option, wenn Sie den genauen Namen aller Objekte kennen, auf die Sie reagieren möchten. |
Anmerkung
Einige Operationen akzeptieren nur "explicit" Regeln und unterstützen "include" oder nicht"exclude". Überprüfen Sie in der AWS API-Referenz für den jeweiligen Vorgang, welche Regelaktionen er unterstützt.
Referenz zum Objektfinder
Objektlocator-Schlüssel nach Datenbank
Auf den folgenden Registerkarten werden die Locator-Schlüssel für jede unterstützte Datenbank angezeigt.
Kategorienamen nach Engine
Der category-name Wert in einer Auswahlregel bezieht sich auf eine gesamte Objektklasse und nicht auf einzelne Objekte. Kategorienamen sind maschinenspezifisch und es wird zwischen Groß- und Kleinschreibung unterschieden. Ob ein Vorgang akzeptiert wird, category-name hängt vom Vorgang ab. Überprüfen Sie die AWS API-Referenz für den Vorgang, den Sie verwenden. Die folgenden Registerkarten decken sowohl Quell- als auch Ziel-Engines ab.
Wichtig
Beim Senden eines Kategorienamens von einer Engine an ein Projekt, das für eine andere Engine konfiguriert ist, wird ein Fehler zurückgegeben.
Beispiele für Auswahlregeln.
Die folgenden Beispiele zeigen, wie Auswahlregeln für gängige Migrationsszenarien geschrieben werden. In jedem Beispiel wird der --selection-rules Parameterwert verwendet, den Sie an API-Operationen für die DMS-Schemakonvertierung wie StartMetadataModelConversion oder StartMetadataModelAssessment übergeben würden.
Wählen Sie eine bestimmte Tabelle für die Konvertierung aus einer Microsoft SQL Server-Quelle aus. Microsoft SQL Server benötigt database-name zusätzlich zuschema-name.
{ "rules": [ { "rule-type": "selection", "rule-id": "1", "rule-name": "rule_name", "rule-action": "explicit", "object-locator": { "server-name": "source_server", "database-name": "database_name", "schema-name": "schema_name", "table-name": "table_name" } } ] }
Wählen Sie alle Objekte in einem Oracle-Schema aus, indem Sie den Schlüssel auf Objektebene weglassen. Oracle hat keine database-name Ebene; das Schema ist der oberste Container unter. server-name
{ "rules": [ { "rule-type": "selection", "rule-id": "1", "rule-name": "rule_name", "rule-action": "explicit", "object-locator": { "server-name": "source_server", "schema-name": "schema_name" } } ] }
Oracle-Ansichten werden table-name mit with adressiert"table-type": "view". Es gibt keinen separaten view-name Schlüssel.
{ "rules": [ { "rule-type": "selection", "rule-id": "1", "rule-name": "rule_name", "rule-action": "explicit", "object-locator": { "server-name": "source_server", "schema-name": "schema_name", "table-name": "view_name", "table-type": "view" } } ] }
Wählen Sie eine bestimmte gespeicherte Prozedur aus einem IBM Db2 als Quelle aus. z/OS IBM Db2 for z/OS verwendet procedure-name und wechselt ohne database-name Ebene direkt von server-name schema-name zu.
{ "rules": [ { "rule-type": "selection", "rule-id": "1", "rule-name": "rule_name", "rule-action": "explicit", "object-locator": { "server-name": "source_server", "schema-name": "schema_name", "procedure-name": "procedure_name" } } ] }
Wählen Sie jede Prozedur in einem SAP ASE-Schema (Sybase ASE) aus, indem Sie sie % als Platzhalter für verwenden. procedure-name SAP ASE (Sybase ASE) erfordert database-name zwischen und. server-name schema-name
{ "rules": [ { "rule-type": "selection", "rule-id": "1", "rule-name": "rule_name", "rule-action": "include", "object-locator": { "server-name": "source_server", "database-name": "database_name", "schema-name": "dbo", "procedure-name": "%" } } ] }
Wird verwendet%, um mehrere Tabellen anhand des Präfixes zuzuordnen. In diesem Beispiel werden alle Tabellen ausgewählt, deren Namen mit beginnenFact_.
{ "rules": [ { "rule-type": "selection", "rule-id": "1", "rule-name": "rule_name", "rule-action": "include", "object-locator": { "server-name": "source_server", "database-name": "database_name", "schema-name": "dbo", "table-name": "Fact_%" } } ] }
Schließen Sie alle Objekte in ein Oracle-Schema ein und schließen Sie dann alle Tabellen aus, deren Namen mit beginnenTMP_. Regeln werden der Reihe nach rule-id ausgewertet; sie haben exclude Vorrang, wenn sie übereinstimmen.
{ "rules": [ { "rule-type": "selection", "rule-id": "1", "rule-name": "rule_name", "rule-action": "include", "object-locator": { "server-name": "source_server", "schema-name": "schema_name" } }, { "rule-type": "selection", "rule-id": "2", "rule-name": "rule_name", "rule-action": "exclude", "object-locator": { "server-name": "source_server", "schema-name": "schema_name", "table-name": "TMP_%" } } ] }
Verwenden Sie mehrere explicit Regeln in einem einzigen Dokument, um einen bestimmten Satz von Prozeduren anhand des Namens auszuwählen.
{ "rules": [ { "rule-type": "selection", "rule-id": "1", "rule-name": "rule_name", "rule-action": "explicit", "object-locator": { "server-name": "source_server", "database-name": "database_name", "schema-name": "dbo", "procedure-name": "PROC_A" } }, { "rule-type": "selection", "rule-id": "2", "rule-name": "rule_name", "rule-action": "explicit", "object-locator": { "server-name": "source_server", "database-name": "database_name", "schema-name": "dbo", "procedure-name": "PROC_B" } }, { "rule-type": "selection", "rule-id": "3", "rule-name": "rule_name", "rule-action": "explicit", "object-locator": { "server-name": "source_server", "database-name": "database_name", "schema-name": "dbo", "procedure-name": "PROC_C" } } ] }
Verwenden Sie eine include Regel, um jeder Prozedur zuzuordnen, deren Name mit 1 beginntPROC_, und anschließend eine exclude Regel, die Sie PROC_TEST aus dieser Gruppe entfernen möchten. Eine exclude Regel muss einer include Regel folgen; eine eigenständige Regel exclude hat keine Wirkung.
{ "rules": [ { "rule-type": "selection", "rule-id": "1", "rule-name": "rule_name", "rule-action": "include", "object-locator": { "server-name": "source_server", "database-name": "database_name", "schema-name": "dbo", "procedure-name": "PROC_%" } }, { "rule-type": "selection", "rule-id": "2", "rule-name": "rule_name", "rule-action": "exclude", "object-locator": { "server-name": "source_server", "database-name": "database_name", "schema-name": "dbo", "procedure-name": "PROC_TEST" } } ] }