Freigeben über


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" "Standardprojekteinstellungen" den Migrationsprojekttyp aus, für den Einstellungen aus der Dropdownliste "Zielversion der Migration" angezeigt oder geändert werden müssen, und wählen Sie dann unten im linken Bereich "Allgemein" und dann "Konvertierung" aus.

  • 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, konvertiert es den Ausdruck in eine TOP-Klausel, gefolgt vom Ausdruck. 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

Der TOP-Ausdruck erfordert, dass der Ausdruck der TOP-Klauseln eine ganze Zahl auswertet. 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 für Schema: In diesem Modus wird das Db2-Schema sch1 standardmäßig sch1 sql Server-Schema in der standardmäßigen SQL Server-Datenbank zugeordnet, die im Verbindungsdialogfeld bereitgestellt wird.

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

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

Konvertierungsmöglichkeiten der MERGE-Anweisung

  • Wenn Sie "Using INSERT", "UPDATE", "DELETE"-Anweisung auswählen, konvertiert SSMA DIE MERGER-Anweisung in INSERT-, UPDATE-, DELETE-Anweisungen.

  • Wenn Sie "Using MERGE"-Anweisung auswählen, konvertiert SSMA die MERGER-Anweisung in DIE MERGE-Anweisung in SQL Server.

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

Standard-/Optimistisch/Vollmodus: Verwenden der MERGE-Anweisung

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 ein Funktionsaufruf Parameter ausgelassen, fügt SSMA den Schlüsselwortstandard in die Funktion ein und ruft an der richtigen Position auf. 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

Konvertieren von FORALL-Anweisung in WHILE-Anweisung

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 NULL-referenzieller Aktion in Spalte, die NICHT NULL ist

Db2 ermöglicht das Erstellen von Fremdschlüsseleinschränkungen, bei denen eine SET-Aktion NULL 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. Sie können z. B. KEINE AKTION anstelle von SET NULLauswä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 nach Möglichkeit auswählen, führt SSMA einen Wechsel zu Prozeduraufrufen nur durch, wenn die Funktion Ausgabeparameter enthält. Wenn die Verschiebung nicht möglich ist, wird das Ausgabe-Attribut des Parameters entfernt. In allen anderen Fällen verlässt SSMA Funktionsaufrufe.

  • Wenn Sie "Nie" auswählen, verlässt SSMA alle Funktionsaufrufe 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

Konvertieren von LOCK TABLE-Anweisungen

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

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

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

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

Db2-Sperrmodus SQL Server-Tabellenhinweis
ROW SHARE ROWLOCK, HOLDLOCK
ROW EXCLUSIVE ROWLOCK, XLOCK, HOLDLOCK
SHARE UPDATE = ZEILENFREIGABE ROWLOCK, HOLDLOCK
SHARE TABLOCK, HOLDLOCK
SHARE ROW EXCLUSIVE TABLOCK, XLOCK, HOLDLOCK
EXCLUSIVE TABLOCKX, HOLDLOCK

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

Standard/Optimistisch/Vollmodus: Ja

Konvertieren von OPEN-FOR-Anweisungen für REF CURSOR OUT-Parameter

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

Konvertieren von Datensätzen als Liste getrennter Variablen

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

Konvertieren von SUBSTR-Funktionsaufrufen in SUBSTRING-Funktionsaufrufe

SSMA kann Db2 SUBSTR-Funktionsaufrufe abhängig von der Anzahl der Parameter in SQL Server-Teilzeichenfolgenfunktionsaufrufe 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
  • Sichten und Objektsichten
  • Gespeicherte Prozeduren und Funktionen
  • Materialisierte Sichten

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 die Funktion "Verwenden TO_CHAR_DATE" auswählen, konvertiert SSMA die TO_CHAR(Datum, Format) in TO_CHAR_DATE Funktion, die für die Konvertierung in englischer Sprache verwendet wird.

  • 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 BEFEHL SET IMPLICIT_TRANSACTIONS ON 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 NULL sind Werte die niedrigsten Werte in einer sortierten Liste. In einer aufsteigenden Liste NULL werden die Werte zuerst angezeigt.

  • In Db2 NULL sind Werte die höchsten Werte in einer sortierten Liste. Standardmäßig NULL werden Die Werte zuletzt in einer aufsteigenden Reihenfolgenliste 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 nach Werten gesucht NULL wird. 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

Emulieren von Zeilenanzahlausnahmen in SELECT

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

Generieren eines Fehlers für DBMS_SQL. ANALYSIEREN

  • Wenn Sie "Fehler" auswählen, generiert SSMA einen Fehler bei der Konvertierung DBMS_SQL. ANALYSIEREN.

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

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 ZEILEID-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.

  • Fügen Sie ZEILEID-Spalte für Tabellen mit Triggern hinzu, fügen Sie ROWID für die Tabellen hinzu, die Trigger enthalten (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

Generieren eines eindeutigen Indexes in ROWID-Spalte

Gibt an, ob SSMA eindeutige Indexspalte in der generierten Spalte ROWID generiert oder nicht. Wenn die Option auf YES festgelegt ist, wird ein eindeutiger Index generiert. Wenn sie auf NO festgelegt ist, wird kein eindeutiger Index in der ZEILEID-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 des geschachtelten Unterprograms von Db2 (deklariert in eigenständigen gespeicherten Prozeduren oder Funktionen).

  • Wenn Sie "Inline" auswählen, werden die geschachtelten Unterprogrammaufrufe durch ihren Text 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

Verwenden von ISNULL in Zeichenfolgenverkettung

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 überprü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

ISNULL-Anweisung wird in REPLACE-Funktionsaufrufen zum Emulieren 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

ISNULL-Anweisung wird in CONCAT-Funktionsaufrufen zum Emulieren 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 der systemeigenen Konvertierungsfunktion nach Möglichkeit

  • 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 verwenden... FOR XML beim Konvertieren von SELECT... INTO für Datensatzvariable

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

RETURNING-Klauselkonvertierung

Konvertieren der RETURNING-Klausel in DELETE-Anweisung in OUTPUT

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 eine SELECT-Anweisung, bevor DELETE-Anweisungen zurückgegebene Werte abrufen.

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

Standard/Optimistisch/Vollmodus: Ja

Konvertieren der RETURNING-Klausel in INSERT-Anweisung in OUTPUT

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 eine 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

Konvertieren der RETURNING-Klausel in UPDATE-Anweisung in OUTPUT

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 des SSMA-Sequenzgenerators.

  • 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). Eine Anleitung zum Migrieren der Db2-Sequenz-Currval-Methode finden Sie auf der SSMA-Teamblogwebsite.

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.

Konvertieren von CURRVAL außerhalb von Triggern

Nur sichtbar, wenn der Convert Sequence Generator auf die Verwendung der Spaltenidentität festgelegt 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.