View a markdown version of this page

Einstellungen für die Konvertierung von SQL Server in PostgreSQL - 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.

Einstellungen für die Konvertierung von SQL Server in PostgreSQL

Die folgenden Einstellungen gelten, wenn die Quelle Microsoft SQL Server und das Ziel Amazon RDS for PostgreSQL oder Amazon Aurora PostgreSQL ist. Sie können diese Einstellungen mithilfe der AWS Management Console oder der API-Operation konfigurieren. ModifyConversionConfiguration

In diesem Thema werden Einstellungen behandelt, die für den Konvertierungspfad von SQL Server zu PostgreSQL spezifisch sind. Zusätzlich zu diesen Einstellungen bietet die DMS-Schemakonvertierung Einstellungen, die für alle Quell- und Zielpaare gelten, z. B. den Schweregrad für Kommentare zu Aktionselementen in konvertiertem SQL und die Option, generative KI für die Konvertierung zu verwenden. Informationen zu diesen Einstellungen finden Sie unter. Allgemeine Konvertierungseinstellungen

Wenn Sie die API oder AWS CLI verwenden, geben Sie die Einstellungen für den Konvertierungspfad unter den Abschnittsnamen MSSQL_TO_POSTGRESQLMSSQL_TO_POSTGRESQL_14, oder anMSSQL_TO_POSTGRESQL_15. Alle drei versionierten Abschnitte akzeptieren dieselben Schlüssel. Um herauszufinden, welche Abschnittsnamen Ihr Projekt verwendet, rufen Sie DescribeConversionConfigurationzuerst an und aktualisieren Sie nur die Abschnitte, die in der Antwort enthalten sind.

Jede Einstellung zeigt das AWS Management Console Label gefolgt vom API- und AWS CLI-Parameternamen in Klammern. Verwenden Sie den Parameternamen, wenn Sie Einstellungen mit der API oder AWS CLI konfigurieren.

Einstellungen für Metadaten

Einstellungen, die steuern, wie die SQL Server-Quellmetadaten — Objektnamen, Schemastruktur und Indexdefinitionen — während der Konvertierung behandelt werden.

Behandeln Sie Objektnamen in der Quelldatenbank so, dass Groß- und Kleinschreibung beachtet wird (CaseSensitivityNames)

Steuert, wie Objektnamen (Tabellen, Spalten, Prozeduren usw.) bei der Konvertierung behandelt werden.

  • true— Objektnamen werden in ihrer ursprünglichen Groß- und Kleinschreibung beibehalten und in doppelte Anführungszeichen gesetzt (z. B."MyTable"). Verwenden Sie diese Option, wenn Ihre Anwendung auf Objekte verweist und dabei Namen mit gemischter Groß- und Kleinschreibung verwendet.

  • false— Objektnamen werden ohne Anführungszeichen in Kleinbuchstaben gefaltet (zum Beispiel). mytable Dies entspricht dem Standardverhalten von PostgreSQL zur Groß- und Kleinschreibung.

Typ: Boolean (|) true false

Standardwert: false

Generieren Sie eindeutige Namen für Indizes () UniqueIndexGeneration

Steuert, ob die DMS-Schemakonvertierung eindeutige Indexnamen im gesamten PostgreSQL-Zielschema generiert. In SQL Server können Indizes in verschiedenen Tabellen denselben Namen verwenden. In PostgreSQL müssen alle Indexnamen innerhalb eines Schemas eindeutig sein.

  • true— Die DMS-Schemakonvertierung generiert eindeutige Namen für alle Indizes und fügt bei Bedarf ein Suffix an, um Kollisionen zu vermeiden. Verwenden Sie dies, wenn Ihr Quellschema Indizes mit demselben Namen in verschiedenen Tabellen enthält.

  • false— Indexnamen werden unverändert aus der Quelle beibehalten. Wenn derselbe Indexname in mehreren Tabellen vorhanden ist, schlägt die Bereitstellung in PostgreSQL möglicherweise mit einem doppelten Namensfehler fehl.

Typ: Boolean (|) true false

Standardwert: true

Konvertiert Prozeduren in Funktionen () ConvertProceduresToFunction

Steuert, ob gespeicherte Prozeduren in PostgreSQL-Funktionen oder -Prozeduren konvertiert werden.

  • false— Prozeduren werden in PROCEDURE PostgreSQL-Objekte konvertiert (erfordert PostgreSQL 11 oder höher).

  • true— Prozeduren, die eine Ergebnismenge zurückgeben, werden in PostgreSQL-Objekte FUNCTION konvertiert. Verwenden Sie diese Option, wenn Ihre Anwendung eine Ergebnismenge aus einem Prozeduraufruf liest oder wenn Sie auf PostgreSQL 10 oder früher abzielen.

Typ: Boolean (|) true false

Standardwert: false

Erstellen Sie zusätzliche Routinen für den Umgang mit offenen Datensätzen () OpenDatasetsProcedures

Steuert, wie Prozeduren, die die Ausgabe von EXEC in eine Tabelle speichern, konvertiert werden.

  • false— Diese Muster bleiben als Aktionspunkte übrig.

  • true— Die DMS-Schemakonvertierung erstellt temporäre Tabellen und ein zusätzliches Verfahren, um dieses Muster auf dem Ziel zu emulieren.

Typ: Boolean (|) true false

Standardwert: false

Schemanamen () SchemaNameTemplate

Steuert, wie der PostgreSQL-Zielschemaname anhand der zweiteiligen Benennungskonvention von SQL Server (Datenbank + Schema) generiert wird.

Bezeichnung der Konsole API/CLI Wert Name des generierten Zielschemas
DB_SCHEMA DB_SCHEMA database_ schema (zum Beispiel). AdventureWorks_dbo Wird verwendet, wenn mehrere Datenbanken auf dieselbe PostgreSQL-Instanz migriert werden, um Namenskollisionen zu vermeiden.
DB DB database (zum Beispiel AdventureWorks).
SCHEMA SCHEMA schema (zum Beispiel dbo). Wird verwendet, wenn Sie eine einzelne Datenbank migrieren und saubere Schemanamen ohne Datenbankpräfix wünschen.

Typ: Zeichenfolge (Enum)

Standardwert: DB_SCHEMA

SQL-Code-Einstellungen

Einstellungen, die steuern, wie SQL Server-Code — Bezeichner, Parameter, Datentypen und nicht unterstützte Funktionen — während der Konvertierung behandelt wird.

Behalten Sie bei Objektnamen dieselbe Groß- und Kleinschreibung bei () AvoidCastingToLowerCase

Steuert, ob bei der DMS-Schemakonvertierung automatische LOWER() Umwandlungen von Bezeichnern im konvertierten Code hinzugefügt werden.

  • false— Die DMS-Schemakonvertierung fügt bei Bedarf LOWER() Umwandlungen hinzu, um Vergleiche zwischen Groß- und Kleinschreibung zu normalisieren.

  • true— Es werden keine automatischen LOWER() Umwandlungen hinzugefügt. Verwenden Sie dies, wenn Ihre PostgreSQL-Datenbank die citext Erweiterung oder eine Sortierung ohne Berücksichtigung der Groß- und Kleinschreibung verwendet, um Vergleiche nativ zu verarbeiten.

Typ: Boolean (|) true false

Standardwert: false

Anmerkung

Diese Einstellung hat keine Auswirkung, wenn sie aktiviert UseCitextForAllStringDatatypes ist. Wenn alle Zeichenfolgentypen zugeordnet sindCITEXT, erfolgt der Vergleich ohne Berücksichtigung der Groß- und Kleinschreibung nativ vom Typ selbst, sodass unabhängig von dieser Einstellung keine LOWER() Umwandlungen generiert werden.

Behalten Sie die ursprünglichen Parameternamen () bei KeepOriginalParameterManes

Steuert, ob die ursprünglichen Parameternamen aus T-SQL Routinen in der konvertierten PostgreSQL-Routinensignatur erhalten bleiben.

  • false— Parameter können umbenannt werden, um Konflikte mit reservierten PostgreSQL-Wörtern oder Namenskonventionen zu vermeiden.

  • true— Die ursprünglichen Parameternamen werden wortwörtlich beibehalten. Verwenden Sie dies, wenn Ihre Anwendung Routinen aufruft, die die Syntax benannter Parameter verwenden (z. B.). my_proc(param_name => value)

Typ: Boolean (|) true false

Standardwert: false

Anmerkung

Der API-Parametername lautet KeepOriginalParameterManes (endet auf Manes, nicht auf Names). Verwenden Sie genau diese Schreibweise, wenn Sie die API oder AWS CLI aufrufen. Die Verwendung KeepOriginalParameterNames wird nicht funktionieren.

Verwenden Sie CITEXT für alle String-Datentypen () UseCitextForAllStringDatatypes

Steuert den Zieldatentyp für alle Zeichenspalten und Parameter.

  • false— Zeichentypen (CHAR,, VARCHARNCHAR,NVARCHAR) werden den entsprechenden PostgreSQL-Typen zugeordnet.

  • true— Alle Zeichentypen sind zugeordnet (Text ohne Berücksichtigung von Groß- und KleinschreibungCITEXT). Verwenden Sie dies, wenn Sie von einer SQL Server-Sortierung migrieren, bei der Groß- und Kleinschreibung nicht berücksichtigt wird, und Sie möchten dieses Verhalten in PostgreSQL beibehalten, ohne Abfragen zu ändern.

Typ: Boolean (|) true false

Standardwert: false

Anmerkung

Wenn diese Einstellung aktiviert ist, fügt die DMS-Schemakonvertierung automatisch CREATE EXTENSION IF NOT EXISTS citext; zu den konvertierten Schemaskripten hinzu (sowohl bei der Anwendung auf das Ziel als auch beim Speichern in einer Datei). Das citext Modul muss jedoch in Ihrer PostgreSQL-Zieldatenbank verfügbar sein, bevor Sie das konvertierte Schema anwenden.

Wenn diese Option aktiviert UseCitextForAllStringDatatypes ist, hat die Einstellung Objektnamen in derselben Groß-/Kleinschreibung beibehalten (AvoidCastingToLowerCase) keine Auswirkung, da Vergleiche ohne Berücksichtigung der Groß- und Kleinschreibung CITEXT nativ verarbeitet werden.

Konvertiert nicht unterstützte integrierte Objekte in Stub-Objekte () ConvUnsupportedBuiltinsToStubs

Steuert, was passiert, wenn die DMS-Schemakonvertierung auf eine T-SQL integrierte Funktion trifft, die kein direktes PostgreSQL-Äquivalent hat.

  • false— Die nicht unterstützte Funktion wird als Aktionspunkt im Bewertungsbericht belassen. Das konvertierte Objekt ist als manuell überprüfbar gekennzeichnet.

  • true— Die nicht unterstützte Funktion wird durch eine Stub-Funktion ersetzt, die dieselbe Signatur hat, aber einen Laufzeitfehler auslöst. Das konvertierte Objekt wurde erfolgreich kompiliert, sodass Sie den Rest des Schemas bereitstellen und testen können, bevor Sie einzelne Stubs adressieren. Stub-Funktionen erzeugen das Migrationsproblem 7822.

Typ: Boolean (|) true false

Standardwert: false

Erstellen Sie Stub-Objekte in einem separaten Schema () CreateStubsInSeparateSchema

Steuert, wo Stub-Objekte platziert werden, wenn diese Option aktiviert ConvUnsupportedBuiltinsToStubs ist.

  • false— Stub-Objekte werden in demselben Schema wie die aufrufenden Objekte erstellt.

  • true— Stub-Objekte werden in einem speziellen aws_sqlserver_stub Schema auf dem Ziel platziert. Verwenden Sie dies, um den Stub-Code von den konvertierten Anwendungsobjekten zu isolieren.

Typ: Boolean (|) true false

Standardwert: false

Beispiel: Konfiguration von SQL Server für PostgreSQL-Einstellungen

Im folgenden Beispiel werden SchemaNameTemplateConvertProceduresToFunction, und festgelegt. UseCitextForAllStringDatatypes Wenden Sie dieselben Einstellungen auf jeden Abschnittsnamen an, den Ihr Projekt verwendet (überprüfen Sie DescribeConversionConfigurationzuerst die Ausgabe von).

{ "MSSQL_TO_POSTGRESQL_15": { "SchemaNameTemplate": "SCHEMA", "ConvertProceduresToFunction": true, "UseCitextForAllStringDatatypes": true }, "MSSQL_TO_POSTGRESQL_14": { "SchemaNameTemplate": "SCHEMA", "ConvertProceduresToFunction": true, "UseCitextForAllStringDatatypes": true }, "MSSQL_TO_POSTGRESQL": { "SchemaNameTemplate": "SCHEMA", "ConvertProceduresToFunction": true, "UseCitextForAllStringDatatypes": true } }