Project-Einstellungen (Konvertierung) (Db2ToSQL)

Die Seite "Konvertierung" des Dialogfelds "Projekteinstellungen " enthält Einstellungen, die anpassen, wie der SQL Server-Migrations-Assistent (SSMA) die Db2-Syntax in die SQL Server-Syntax konvertiert.

Der Konvertierungsbereich ist in den Dialogfeldern "Projekteinstellungen " und "Standardprojekteinstellungen " verfügbar:

  • Um Einstellungen für alle SSMA-Projekte anzugeben, wählen Sie im Menü Extras die Option Standardprojekteinstellungen, wählen Sie in der Dropdownliste Zielversion der Migration den Migrationsprojekttyp aus, für den Einstellungen angezeigt oder geändert werden sollen, wählen Sie dann am unteren Rand des linken Bereichs Allgemein und anschließend Konvertierung.

  • Um Einstellungen für das aktuelle Projekt anzugeben, wählen Sie im Menü "Extras" "Projekteinstellungen" die Option "Allgemein" unten im linken Bereich und dann "Konvertierung" aus.

Konvertierungsmeldungen

Generieren von Nachrichten zu angewendeten Problemen

Gibt an, ob SSMA während der Konvertierung Informationsmeldungen generiert, diese im Ausgabebereich anzeigt und dem konvertierten Code hinzufügt.

Wenn Sie im Feld "Modus " einen Konvertierungsmodus auswählen, wendet SSMA die folgende Einstellung an:

Standard-/Optimistischer Modus: Nein

Vollmodus: Nein

Sonstige Optionen

Umwandeln von ROWNUM-Ausdrücken als ganze Zahlen

Wenn SSMA ROWNUM-Ausdrücke konvertiert, wandelt es den Ausdruck in eine TOP-Klausel um, auf die der Ausdruck folgt. Das folgende Beispiel zeigt ROWNUM in einer Db2-DELETE-Anweisung:

DELETE FROM Table1
WHERE ROWNUM < expression
    AND Field1 >= 2

Das folgende Beispiel zeigt das resultierende Transact-SQL:The following example shows the result Transact-SQL:

DELETE TOP (expression - 1)
FROM Table1
WHERE Field1 >= 2

TOP erfordert, dass der Ausdruck der TOP-Klausel zu einer ganzen Zahl ausgewertet wird. Wenn die ganze Zahl negativ ist, erzeugt die Anweisung einen Fehler.

  • Wenn Sie "Ja" auswählen, wandelt SSMA den Ausdruck als ganze Zahl um.

  • Wenn Sie "Nein" auswählen, markiert SSMA alle nicht ganzzahligen Ausdrücke als Fehler im konvertierten Code.

Wenn Sie im Feld "Modus " einen Konvertierungsmodus auswählen, wendet SSMA die folgende Einstellung an:

Standardmodus/Vollmodus: Nein

Optimistischer Modus: Ja

Standardschemazuordnung

Diese Einstellung gibt an, wie Db2-Schemas SQL Server-Schemas zugeordnet werden. In dieser Einstellung stehen zwei Optionen zur Verfügung:

  1. Schema für Datenbank: In diesem Modus wird das Db2-Schema sch1 standardmäßig dbo dem SQL Server-Schema in sql Server-Datenbank sch1zugeordnet.

  2. Schema-zu-Schema: In diesem Modus wird das Db2-Schema sch1 standardmäßig dem sch1 SQL Server-Schema in der standardmäßigen SQL Server-Datenbank zugeordnet, die im Verbindungsdialogfeld angegeben ist.

Wenn Sie im Feld "Modus " einen Konvertierungsmodus auswählen, wendet SSMA die folgende Einstellung an:

Standard-/Optimistisch/Vollmodus: Schema für Datenbank

Möglichkeiten zur Konvertierung von MERGE Anweisung

  • Wenn Sie die Anweisung INSERT, UPDATE, DELETE verwenden auswählen, konvertiert SSMA die MERGE-Anweisung in INSERT, UPDATE, DELETE Anweisungen.

  • Wenn Sie Anweisung „Using MERGE statement“ auswählen, wandelt SSMA die MERGE-Anweisung in eine MERGE-Anweisung für SQL Server um.

Wenn Sie im Feld "Modus " einen Konvertierungsmodus auswählen, wendet SSMA die folgende Einstellung an:

Standard-/Optimistisch/Vollmodus: Using-Anweisung MERGE

Konvertieren von Aufrufen in Unterprogramme, die Standardargumente verwenden

SQL Server-Funktionen unterstützen die Auslassung von Parametern im Funktionsaufruf nicht. Darüber hinaus unterstützen SQL Server-Funktionen und -Prozeduren Ausdrücke nicht als Standardparameterwerte.

  • Wenn Sie Ja auswählen und bei einem Funktionsaufruf Parameter ausgelassen werden, fügt SSMA das Schlüsselwort default an der richtigen Stelle in die Funktion und den Funktionsaufruf ein. Anschließend wird der Anruf mit einer Warnung markiert.

  • Wenn Sie "Nein" auswählen, kennzeichnet SSMA die Funktionsaufrufe als Fehler.

Wenn Sie im Feld "Modus " einen Konvertierungsmodus auswählen, wendet SSMA die folgende Einstellung an:

Standard/Optimistisch/Vollmodus: Ja

Zählen-Funktion in COUNT_BIG konvertieren

Wenn Ihre ANZAHL-Funktionen wahrscheinlich Werte zurückgeben, die größer als 2.147.483.647 sind, was 231-1 ist, sollten Sie die Funktionen in COUNT_BIG konvertieren.

  • Wenn Sie "Ja" auswählen, konvertiert SSMA alle Verwendungen von COUNT in COUNT_BIG.

  • Wenn Sie "Nein" auswählen, bleiben die Funktionen als ANZAHL. SQL Server gibt einen Fehler zurück, wenn die Funktion einen Wert zurückgibt, der größer als 231-1 ist.

Wenn Sie im Feld "Modus " einen Konvertierungsmodus auswählen, wendet SSMA die folgende Einstellung an:

Standardmodus/Vollmodus: Ja

Optimistischer Modus: Nein

FORALL-Anweisung in WHILE-Anweisung konvertieren

Definiert, wie SSMA FORALL-Schleifen für PL/SQL-Auflistungselemente behandelt.

  • Wenn Sie "Ja" auswählen, erstellt SSMA eine WHILE-Schleife, in der Sammlungselemente einzeln abgerufen werden.

  • Wenn Sie "Nein" auswählen, generiert SSMA ein Rowset aus der Auflistung mithilfe der Knoten()-Methode und verwendet es als einzelne Tabelle. Dies ist effizienter, macht jedoch den Ausgabecode weniger lesbar.

Wenn Sie im Feld "Modus " einen Konvertierungsmodus auswählen, wendet SSMA die folgende Einstellung an:

Standard-/Optimistischer Modus: Nein

Vollmodus: Ja

Konvertieren von Fremdschlüsseln mit SET referentieller NULL-Aktion in Spalte, die NICHT NULL ist

Db2 ermöglicht das Erstellen von Fremdschlüsseleinschränkungen, bei denen eine SET NULL Aktion möglicherweise nicht ausgeführt werden konnte, da NULLs in der Spalte, auf die verwiesen wird, nicht zulässig sind. SQL Server lässt diese Fremdschlüsselkonfiguration nicht zu.

  • Wenn Sie "Ja" auswählen, generiert SSMA referenzielle Aktionen wie in Db2. Sie müssen jedoch manuelle Änderungen vornehmen, bevor Sie die Einschränkung auf SQL Server laden. Beispielsweise können Sie statt SET NULL KEINE AKTION auswählen.

  • Wenn Sie "Nein" auswählen, wird die Einschränkung als Fehler markiert.

Wenn Sie im Feld "Modus " einen Konvertierungsmodus auswählen, wendet SSMA die folgende Einstellung an:

Standard-/Optimistisch/Vollmodus: Nein

Konvertieren von Funktionsaufrufen in Prozeduraufrufe

Einige Db2-Funktionen werden als autonome Transaktionen definiert oder enthalten Anweisungen, die in SQL Server nicht gültig wären. In diesen Fällen erstellt SSMA eine Prozedur und eine Funktion, die ein Wrapper für die Prozedur ist. Die konvertierte Funktion ruft die Implementierungsprozedur auf.

SSMA kann Aufrufe der Wrapperfunktion in Aufrufe der Prozedur konvertieren. Dadurch wird besser lesbarer Code erstellt und die Leistung verbessert. Der Kontext lässt ihn jedoch nicht immer zu; Beispielsweise können Sie einen Funktionsaufruf in der SELECT-Liste nicht durch einen Prozeduraufruf ersetzen. SSMA verfügt über einige Optionen, um die gängigen Fälle abzudecken:

  • Wenn Sie "Immer" auswählen, versucht SSMA, Wrapperfunktionsaufrufe in Prozeduraufrufe zu konvertieren. Wenn der aktuelle Kontext diese Konvertierung nicht zulässt, wird eine Fehlermeldung erstellt. Auf diese Weise bleiben keine Funktionsaufrufe im generierten Code erhalten.

  • Wenn Sie Wenn möglich auswählen, wandelt SSMA Funktionsaufrufe nur dann in Prozeduraufrufe um, wenn die Funktion über Ausgabeparameter verfügt. Wenn die Verschiebung nicht möglich ist, wird das Ausgabe-Attribut des Parameters entfernt. In allen anderen Fällen belässt SSMA Funktionsaufrufe unverändert.

  • Wenn Sie Nie auswählen, belässt SSMA alle Funktionsaufrufe unverändert als Funktionsaufrufe. Manchmal kann diese Wahl aufgrund von Leistungsgründen inakzeptabel sein.

Wenn Sie im Feld "Modus " einen Konvertierungsmodus auswählen, wendet SSMA die folgende Einstellung an:

Standard-/Optimistisch/Vollmodus: Wenn möglich

LOCK-TABLEAnweisungen konvertieren

SSMA kann viele LOCK-TABLEAnweisungen in Tabellenhinweise umwandeln. SSMA kann keine LOCK-TABLE-Anweisungen konvertieren, die PARTITION-, SUBPARTITION-, @dblink- und NOWAIT-Klauseln enthalten, und kennzeichnet solche Anweisungen mit Konvertierungsfehlermeldungen.

  • Wenn Sie "Ja" auswählen, konvertiert SSMA unterstützte LOCK-Anweisungen TABLE in Tabellenhinweise.

  • Wenn Sie "Nein" auswählen, markiert SSMA alle LOCK-Anweisungen TABLE mit Konvertierungsfehlermeldungen.

Die folgende Tabelle zeigt, wie SSMA db2-Sperrmodi konvertiert:

Db2-Sperrmodus SQL Server-Tabellenhinweis
ZEILENFREIGABE ROWLOCK, HOLDLOCK
ZEILE EXKLUSIV ROWLOCK, XLOCK, HOLDLOCK
SHARE UPDATE = ROW SHARE ROWLOCK, HOLDLOCK
TEILEN TABLOCK, HOLDLOCK
EXKLUSIVE ZEILENFREIGABE TABLOCK, XLOCK, HOLDLOCK
EXKLUSIV TABLOCKX, HOLDLOCK

Wenn Sie im Feld "Modus " einen Konvertierungsmodus auswählen, wendet SSMA die folgende Einstellung an:

Standard/Optimistisch/Vollmodus: Ja

OPEN-FOR-Anweisungen für REF CURSOR OUT-Parameter konvertieren

In Db2 kann die OPEN-FOR-Anweisung verwendet werden, um ein Resultset an den OUT-Parameter eines Unterprogramms vom Typ REF CURSOR zurückzugeben. In SQL Server geben gespeicherte Prozeduren direkt die Ergebnisse von SELECT-Anweisungen zurück.

SSMA kann viele OPEN-FOR-Anweisungen in SELECT-Anweisungen konvertieren.

  • Wenn Sie "Ja" auswählen, konvertiert SSMA die OPEN-FOR-Anweisung in eine SELECT-Anweisung, die das Resultset an den Client zurückgibt.

  • Wenn Sie "Nein" auswählen, generiert SSMA eine Fehlermeldung im konvertierten Code und im Ausgabebereich.

Wenn Sie im Feld "Modus " einen Konvertierungsmodus auswählen, wendet SSMA die folgende Einstellung an:

Standard/Optimistisch/Vollmodus: Ja

Datensatz in eine Liste separater Variablen konvertieren

SSMA kann Db2-Datensätze in separate Variablen und XML-Variablen mit bestimmter Struktur konvertieren.

  • Wenn Sie "Ja" auswählen, konvertiert SSMA den Datensatz nach Möglichkeit in eine Liste getrennter Variablen.

  • Wenn Sie "Nein" auswählen, konvertiert SSMA den Datensatz in XML-Variablen mit bestimmter Struktur.

Wenn Sie im Feld "Modus " einen Konvertierungsmodus auswählen, wendet SSMA die folgende Einstellung an:

Standard/Optimistisch/Vollmodus: Ja

SUBSTR-Funktionsaufrufe in SUBSTRING-Funktionsaufrufe umwandeln

SSMA kann Db2 SUBSTR-Funktionsaufrufe je nach Anzahl der Parameter in SQL Server-substring-Funktionsaufrufe konvertieren. Wenn SSMA keinen SUBSTR-Funktionsaufruf konvertieren kann oder die Anzahl der Parameter nicht unterstützt wird, konvertiert SSMA den SUBSTR-Funktionsaufruf in einen benutzerdefinierten SSMA-Funktionsaufruf.

  • Wenn Sie "Ja" auswählen, konvertiert SSMA SUBSTR-Funktionsaufrufe, die drei Parameter verwenden, in EINE SQL Server-Teilzeichenfolge. Andere SUBSTR-Funktionen werden konvertiert, um die benutzerdefinierte SSMA-Funktion aufzurufen.

  • Wenn Sie "Nein" auswählen, konvertiert SSMA den SUBSTR-Funktionsaufruf in einen benutzerdefinierten SSMA-Funktionsaufruf.

Wenn Sie im Feld "Modus " einen Konvertierungsmodus auswählen, wendet SSMA die folgende Einstellung an:

Standard-/Optimistischer Modus: Ja

Vollmodus: Nein

Konvertieren von Untertypen

SSMA kann PL/SQL-Untertypen auf zwei Arten konvertieren:

  • Wenn Sie "Ja" auswählen, erstellt SSMA einen benutzerdefinierten SQL Server-Typ aus einem Untertyp und verwendet ihn für jede Variable dieses Untertyps.

  • Wenn Sie "Nein" auswählen, ersetzt SSMA alle Quelldeklarationen des Untertyps durch den zugrunde liegenden Typ und konvertiert das Ergebnis wie gewohnt. In diesem Fall werden keine zusätzlichen Typen in SQL Server erstellt.

Wenn Sie im Feld "Modus " einen Konvertierungsmodus auswählen, wendet SSMA die folgende Einstellung an:

Standard-/Optimistisch/Vollmodus: Nein

Synonyme konvertieren

Synonyme für die folgenden Db2-Objekte können zu SQL Server migriert werden:

  • Tabellen und Objekttabellen
  • Ansichten und Objektansichten
  • Gespeicherte Prozeduren und Funktionen
  • Materialisierte Ansichten

Synonyme für die folgenden Db2-Objekte können durch direkte Verweise auf die Objekte ersetzt werden:

  • Sequenzen
  • Pakete
  • Java-Klassen-Schemaobjekte
  • Benutzerdefinierte Objekttypen

Andere Synonyme können nicht migriert werden. SSMA generiert Fehlermeldungen für das Synonym und alle Verweise, die das Synonym verwenden.

  • Wenn Sie "Ja" auswählen, erstellt SSMA SQL Server-Synonyme und direkte Objektverweise gemäß den vorherigen Listen.

  • Wenn Sie "Nein" auswählen, erstellt SSMA direkte Objektverweise für alle hier aufgeführten Synonyme.

Wenn Sie im Feld "Modus " einen Konvertierungsmodus auswählen, wendet SSMA die folgende Einstellung an:

Standard/Optimistisch/Vollmodus: Ja

Konvertieren TO_CHAR(Datum, Format)

SSMA kann Db2 TO_CHAR(Datum, Format) in Prozeduren aus sysdb-Datenbank konvertieren.

  • Wenn Sie Funktion TO_CHAR_DATE verwenden auswählen, konvertiert SSMA TO_CHAR(Datum, Format) in die Funktion TO_CHAR_DATE und verwendet für die Konvertierung die englische Sprache.

  • Wenn Sie die Funktion "Using TO_CHAR_DATE_LS Function (NLS care)" auswählen, konvertiert SSMA die TO_CHAR(Datum, Format) in TO_CHAR_DATE_LS Funktion mithilfe der Sitzungssprache für die Konvertierung.

Wenn Sie im Feld "Modus " einen Konvertierungsmodus auswählen, wendet SSMA die folgende Einstellung an:

Standard-/Optimistischer Modus: Verwenden TO_CHAR_DATE Funktion

Vollmodus: Verwenden der funktion TO_CHAR_DATE_LS (NLS care)

Konvertieren von Transaktionsverarbeitungsanweisungen

SSMA kann Db2-Transaktionsverarbeitungsanweisungen konvertieren:

  • Wenn Sie "Ja" auswählen, konvertiert SSMA Db2-Transaktionsverarbeitungsanweisungen in SQL Server-Anweisungen.

  • Wenn Sie "Nein" auswählen, kennzeichnet SSMA die Transaktionsverarbeitungsanweisungen als Konvertierungsfehler.

Hinweis

Db2 öffnet Transaktionen implizit. Um dieses Verhalten auf SQL Server zu emulieren, müssen Sie BEGIN TRANSACTION-Anweisungen manuell dort hinzufügen, wo Ihre Transaktionen beginnen sollen. Alternativ können Sie den SET IMPLICIT_TRANSACTIONS ON-Befehl am Anfang der Sitzung ausführen. SSMA fügt SET IMPLICIT_TRANSACTIONS ON automatisch hinzu, wenn Subroutinen mit autonomen Transaktionen konvertiert werden.

Wenn Sie im Feld "Modus " einen Konvertierungsmodus auswählen, wendet SSMA die folgende Einstellung an:

Standard/Optimistisch/Vollmodus: Ja

Emulieren des Db2-Nullverhaltens in ORDER BY-Klauseln

NULL-Werte werden in SQL Server und Db2 unterschiedlich sortiert:

  • In SQL Server sind NULL die niedrigsten Werte in einer geordneten Liste. In einer aufsteigenden Liste NULL werden die Werte zuerst angezeigt.

  • In Db2 sind NULL-Werte die höchsten Werte in einer geordneten Liste. Standardmäßig werden NULL-Werte in einer Liste in aufsteigender Reihenfolge zuletzt angezeigt.

  • Db2 verfügt über NULLS FIRST- und NULLS LAST-Klauseln, mit denen Sie ändern können, wie Db2 NULLs bestellt.

SSMA kann das Db2 ORDER BY-Verhalten emulieren, indem NULL-Werte überprüft werden. Anschließend sortiert sie zuerst nach NULL Werten in der angegebenen Reihenfolge und dann nach anderen Werten.

  • Wenn Sie "Ja" auswählen, konvertiert SSMA die Db2-Anweisung so, dass das Db2 ORDER BY-Verhalten emuliert wird.

  • Wenn Sie "Nein" auswählen, ignoriert SSMA Db2-Regeln und generiert eine Fehlermeldung, wenn die NULLS FIRST- und NULLS LAST-Klauseln auftreten.

Wenn Sie im Feld "Modus " einen Konvertierungsmodus auswählen, wendet SSMA die folgende Einstellung an:

Standard-/Optimistischer Modus: Nein

Vollmodus: Ja

Ausnahmen bei der Zeilenanzahl in SELECT emulieren

Wenn eine SELECT-Anweisung mit einer INTO-Klausel keine Zeilen zurückgibt, löst Db2 eine NO_DATA_FOUND Ausnahme aus. Wenn die Anweisung zwei oder mehr Zeilen zurückgibt, wird die TOO_MANY_ROWS Ausnahme ausgelöst. Die konvertierte Anweisung in SQL Server löst keine Ausnahme aus, wenn sich die Zeilenanzahl von einer unterscheidet.

  • Wenn Sie "Ja" auswählen, fügt SSMA nach jeder SELECT-Anweisung den Aufruf der sysdb-Prozedur db_error_exact_one_row_check hinzu. In diesem Verfahren werden die ausnahmen NO_DATA_FOUND und TOO_MANY_ROWS emuliert. Dies ist der Standardwert und ermöglicht die Vervielfältigung des Db2-Verhaltens so nah wie möglich. Sie sollten immer "Ja" auswählen, wenn der Quellcode Ausnahmehandler enthält, die diese Fehler verarbeiten. Wenn die SELECT-Anweisung in einer benutzerdefinierten Funktion auftritt, wird dieses Modul in eine gespeicherte Prozedur konvertiert, da das Ausführen gespeicherter Prozeduren und das Auslösen von Ausnahmen nicht mit dem SQL Server-Funktionskontext kompatibel ist.

  • Wenn Sie "Nein" auswählen, werden keine Ausnahmen generiert. Dies kann nützlich sein, wenn SSMA eine benutzerdefinierte Funktion konvertiert und sie in SQL Server eine Funktion bleiben soll.

Wenn Sie im Feld "Modus " einen Konvertierungsmodus auswählen, wendet SSMA die folgende Einstellung an:

Standard/Optimistisch/Vollmodus: Ja

Einen Fehler für DBMS_SQL.PARSE generieren

  • Wenn Sie Fehler auswählen, generiert SSMA während der Konvertierung von DBMS_SQL.PARSE einen Fehler.

  • Wenn Sie Warnung auswählen, generiert SSMA bei der Konvertierung von DBMS_SQL.PARSE eine Warnung.

Wenn Sie im Feld "Modus " einen Konvertierungsmodus auswählen, wendet SSMA die folgende Einstellung an:

Standard/Optimistisch/Vollmodus: Fehler

ROWID-Spalte generieren

Wenn SSMA Tabellen in SQL Server erstellt, kann sie eine ROWID-Spalte erstellen. Wenn Daten migriert werden, erhält jede Zeile einen neuen UNIQUEIDENTIFIER-Wert, der von der Newid()-Funktion generiert wird.

  • Wenn Sie Ja auswählen, wird die ROWID-Spalte in allen Tabellen erstellt, und SQL Server generiert beim Einfügen von Werten GUIDs. Wählen Sie immer "Ja " aus, wenn Sie die Verwendung des SSMA-Testers planen.

  • Wenn Sie "Nein" auswählen, werden ROWID-Spalten nicht zu Tabellen hinzugefügt.

  • ROWID-Spalte für Tabellen mit Triggern hinzufügen ROWID für Tabellen mit Triggern hinzufügen (Standard).

Wenn Sie im Feld "Modus " einen Konvertierungsmodus auswählen, wendet SSMA die folgende Einstellung an:

Standard-/Optimistischer Modus: Hinzufügen einer ROWID-Spalte für Tabellen mit Triggern

Vollmodus: Ja

Einen eindeutigen Index für die ROWID-Spalte erstellen

Gibt an, ob SSMA für die generierte ROWID-Spalte eine eindeutige Indexspalte erstellt oder nicht. Wenn die Option auf YES festgelegt ist, wird ein eindeutiger Index generiert. Wenn dies auf NO festgelegt ist, wird kein Unique-Index für die ROWID-Spalte generiert.

Wenn Sie im Feld "Modus " einen Konvertierungsmodus auswählen, wendet SSMA die folgende Einstellung an:

Standard/Optimistisch/Vollmodus: Ja

Konvertierung lokaler Module

Definiert den Typ der Konvertierung eines geschachtelten Db2-Unterprogramms (deklariert in einer eigenständigen gespeicherten Prozedur oder Funktion).

  • Wenn Sie Inline auswählen, werden die verschachtelten Unterprogrammaufrufe durch den Programmkörper ersetzt.

  • Wenn Sie gespeicherte Prozeduren auswählen, wird ein geschachteltes Unterprogramm in eine gespeicherte SQL Server-Prozedur konvertiert, und seine Aufrufe werden bei diesem Prozeduraufruf ersetzt.

Wenn Sie im Feld "Modus " einen Konvertierungsmodus auswählen, wendet SSMA die folgende Einstellung an:

Standard-/Optimistisch/Vollmodus: Inline

ISNULL in der Zeichenfolgenverkettung verwenden

Db2 und SQL Server geben unterschiedliche Ergebnisse zurück, wenn Zeichenfolgenverkettungen Werte enthalten NULL . Db2 behandelt den NULL Wert wie einen leeren Zeichensatz. SQL Server gibt zurück NULL.

  • Wenn Sie "Ja" auswählen, ersetzt SSMA das Db2-Verkettungszeichen (||) durch das SQL Server-Verkettungszeichen (+). SSMA prüft auch die Ausdrücke auf beiden Seiten der Verkettung auf NULL-Werte.

  • Wenn Sie "Nein" auswählen, ersetzt SSMA die Verkettungszeichen, sucht aber nicht nach NULL Werten.

Wenn Sie im Feld "Modus " einen Konvertierungsmodus auswählen, wendet SSMA die folgende Einstellung an:

Verwenden von ISNULL in REPLACE-Funktionsaufrufen

Die ISNULL-Anweisung wird in REPLACE-Funktionsaufrufen zur Emulation des Db2-Verhaltens verwendet. Für diese Einstellung sind die folgenden Optionen verfügbar:

  • JA
  • NEIN

Wenn Sie im Feld "Modus " einen Konvertierungsmodus auswählen, wendet SSMA die folgende Einstellung an:

Standard-/Optimistischer Modus: Nein

Vollmodus: Ja

Verwenden von ISNULL in CONCAT-Funktionsaufrufen

Die ISNULL-Anweisung wird in CONCAT-Funktionsaufrufen verwendet, um das Verhalten von Db2 zu emulieren. Für diese Einstellung sind die folgenden Optionen verfügbar:

  • JA
  • NEIN

Wenn Sie im Feld "Modus " einen Konvertierungsmodus auswählen, wendet SSMA die folgende Einstellung an:

Standard-/Optimistischer Modus: Nein

Vollmodus: Ja

Verwenden Sie nach Möglichkeit die native Konvertierungsfunktion.

  • Wenn Sie "Ja" auswählen, konvertiert SSMA nach Möglichkeit die TO_CHAR(Datum, Format) in die systemeigene Konvertierungsfunktion.

  • Wenn Sie "Nein" auswählen, konvertiert SSMA die TO_CHAR(Datum, Format) in TO_CHAR_DATE oder TO_CHAR_DATE_LS (definiert durch "Konvertieren TO_CHAR(Datum, Format)"-Optionen).

Wenn Sie im Feld "Modus " einen Konvertierungsmodus auswählen, wendet SSMA die folgende Einstellung an:

Standard-/Optimistischer Modus: Ja

Vollmodus: Nein

SELECT...FOR XML beim Konvertieren von SELECT...INTO für eine Datensatzvariable verwenden

Gibt an, ob ein XML-Resultset generiert werden soll, wenn Sie eine Datensatzvariable auswählen.

  • Wenn Sie "Ja" auswählen, gibt die SELECT-Anweisung XML zurück.

  • Wenn Sie "Nein" auswählen, gibt die SELECT-Anweisung ein Resultset zurück.

Wenn Sie im Feld "Modus " einen Konvertierungsmodus auswählen, wendet SSMA die folgende Einstellung an:

Standard-/Optimistisch/Vollmodus: Nein

Umwandlung der RETURNING-Klausel

RETURNING-Klausel in DELETE-Anweisung in OUTPUT umwandeln

Db2 stellt eine RETURNING-Klausel als Möglichkeit bereit, gelöschte Werte sofort abzurufen. SQL Server stellt diese Funktionalität mit der OUTPUT-Klausel bereit.

  • Wenn Sie Ja auswählen, konvertiert SSMA RETURNING-Klauseln in DELETE-Anweisungen in OUTPUT-Klauseln. Da Trigger für eine Tabelle Werte ändern können, kann der zurückgegebene Wert in SQL Server anders sein als in Db2.

  • Wenn Sie Nein auswählen, generiert SSMA vor den DELETE-Anweisungen eine SELECT-Anweisung, um zurückgegebene Werte abzurufen.

Wenn Sie im Feld "Modus " einen Konvertierungsmodus auswählen, wendet SSMA die folgende Einstellung an:

Standard/Optimistisch/Vollmodus: Ja

RETURNING-Klausel in der INSERT-Anweisung in OUTPUT konvertieren

Db2 bietet eine RETURNING-Klausel als Möglichkeit, sofort eingefügte Werte abzurufen. SQL Server stellt diese Funktionalität mit der OUTPUT-Klausel bereit.

  • Wenn Sie "Ja" auswählen, konvertiert SSMA eine RETURNING-Klausel in einer INSERT Anweisung in OUTPUT. Da Trigger für eine Tabelle Werte ändern können, kann der zurückgegebene Wert in SQL Server anders sein als in Db2.

  • Wenn Sie "Nein" auswählen, emuliert SSMA die Db2-Funktionalität, indem Sie Werte aus einer Referenztabelle einfügen und dann auswählen.

Wenn Sie im Feld "Modus " einen Konvertierungsmodus auswählen, wendet SSMA die folgende Einstellung an:

Standard/Optimistisch/Vollmodus: Ja

RETURNING-Klausel in der Anweisung UPDATE in OUTPUT umwandeln

Db2 bietet eine RETURNING-Klausel als Möglichkeit, sofort aktualisierte Werte abzurufen. SQL Server stellt diese Funktionalität mit der OUTPUT-Klausel bereit.

  • Wenn Sie Ja auswählen, konvertiert SSMA RETURNING-Klauseln in UPDATE-Anweisungen in OUTPUT-Klauseln. Da Trigger für eine Tabelle Werte ändern können, kann der zurückgegebene Wert in SQL Server anders sein als in Db2.

  • Wenn Sie "Nein" auswählen, generiert SSMA SELECT-Anweisungen nach UPDATE Anweisungen, um zurückgegebene Werte abzurufen.

Wenn Sie im Feld "Modus " einen Konvertierungsmodus auswählen, wendet SSMA die folgende Einstellung an:

Standard/Optimistisch/Vollmodus: Ja

Sequenzkonvertierung

Sequenzgenerator konvertieren

In Db2 können Sie eine Sequenz verwenden, um eindeutige Bezeichner zu generieren.

SSMA kann Sequenzen in Folgendes konvertieren.

  • Verwenden des SQL Server-Sequenzgenerators.

  • Verwenden von SSMA-Sequenzgenerator.

  • Verwenden der Spaltenidentität.

Die Standardoption beim Konvertieren in SQL Server besteht darin, den Sequenzgenerator zu verwenden. Sql Server 2012 (11.x) und SQL Server 2014 (12.x) unterstützen jedoch nicht das Abrufen des aktuellen Sequenzwerts (z. B. die der Methode db2 sequence currval). Hinweise zur Migration der currval-Methode für Db2-Sequenzen finden Sie im Blog des SSMA-Teams.

SSMA bietet auch eine Option zum Konvertieren der Db2-Sequenz in den SSMA-Sequenz-Emulator.

Schließlich können Sie die Sequenz, die einer Spalte in der Tabelle zugewiesen ist, auch in SQL Server-Identitätswerte konvertieren. Sie müssen die Zuordnung zwischen den Sequenzen zu einer Identitätsspalte auf der Registerkarte "Db2-Tabelle" angeben.

CURRVAL außerhalb von Triggern konvertieren

Nur sichtbar, wenn der Convert Sequence Generator auf Spaltenidentität verwenden eingestellt ist. Da Db2 Sequences Objekte sind, die von Tabellen getrennt sind, verwenden viele Tabellen, in denen Sequences einen Trigger verwenden, um einen neuen Sequenzwert zu generieren und einzufügen. SSMA kommentiert diese Anweisungen oder kennzeichnet sie als Fehler, wenn die Auskommentierung Fehler verursachen würde.

  • Wenn Sie "Ja" auswählen, markiert SSMA alle Verweise auf externe Trigger für die konvertierte Sequenz CURRVAL mit einer Warnung.

  • Wenn Sie "Nein" auswählen, markiert SSMA alle Verweise auf externe Trigger für die konvertierte Sequenz CURRVAL mit einem Fehler.