Project-Einstellungen (Konvertierung) (DB2ToSQL)

Die Seite "Konvertierung" des Dialogfelds "Projekteinstellungen " enthält Einstellungen, die anpassen, wie SSMA die DB2-Syntax in die SQL Server-Syntax konvertiert.

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

  • Wenn Sie Einstellungen für alle SSMA-Projekte angeben möchten, klicken Sie im Menü "Extras" auf "Standardprojekteinstellungen", wählen Sie den Migrationsprojekttyp aus, für den die Einstellungen aus der Dropdownliste "Zielversion der Migration" angezeigt oder geändert werden müssen, und klicken Sie dann unten im linken Bereich auf "Allgemein", und klicken Sie dann auf "Konvertierung".

  • Um Einstellungen für das aktuelle Projekt anzugeben, klicken Sie im Menü "Extras " auf "Projekteinstellungen" und dann unten im linken Bereich auf "Allgemein ", und klicken Sie dann auf " Konvertierung".

Konvertierungsbenachrichtigungen

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 dem SQL Server-Schema 'dbo' in der SQL Server-Datenbank 'sch1' zugeordnet.

  2. Schema zu Schema: In diesem Modus wird das DB2-Schema 'sch1' standardmäßig dem SQL Server-Schema 'sch1' in der im Verbindungsdialogfeld bereitgestellten Standarddatenbank SQL Server zugeordnet.

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.

Warnung

Diese Projekteinstellungsoption ist nur in SQL Server 2008, SQL Server 2012, SQL Server 2014 verfügbar.

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. Außerdem 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, markiert 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 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. Sie können z. B. KEINE AKTION anstelle von SET NULL 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 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, belä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 werden mit Konvertierungsfehlermeldungen markiert.

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

  • In DB2 sind NULL-Werte die höchsten Werte in einer sortierten Liste. Nullwerte werden standardmäßig 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 NULL-Werten gesucht wird. Anschließend werden die Werte nach NULL-Werten in der angegebenen Reihenfolge sortiert und dann nach anderen Werten sortiert.

  • 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 KLAUSELN NULLS FIRST und NULLS LAST 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. Beachten Sie, dass, wenn die SELECT-Anweisung in einer benutzerdefinierten Funktion auftritt, dieses Modul in eine gespeicherte Prozedur konvertiert wird, 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. PARSE

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

  • Wenn Sie "Warnung" auswählen, generiert SSMA warnungen beim Konvertierungs-DBMS_SQL. PARSE.

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 den SSMA-Tester verwenden möchten.

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

  • Fügen Sie ROWID-Spalte für Tabellen mit Triggern hinzu, und fügen Sie ROWID für die Tabellen hinzu, die Trigger enthalten.

Warnung

Die Standardeinstellung für SQL Server 2005, SQL Server 2008 und SQL Server 2012 und 2014 ist das Hinzufügen von ROWID-Spalte für Tabellen mit Triggern.

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 "JA" festgelegt ist, wird ein eindeutiger Index generiert und wenn sie auf "NEIN" festgelegt ist, wird der eindeutige Index nicht 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 DB2-Unterprograms (deklariert in eigenständiger gespeicherter Prozedur oder Funktion).

  • Wenn Sie "Inline" auswählen, werden die geschachtelten Unterprogrammaufrufe durch den Textkörper ersetzt.

  • Wenn Sie gespeicherte Prozeduren auswählen, wird das geschachtelte 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 NULL-Werte enthalten. DB2 behandelt den NULL-Wert wie einen leeren Zeichensatz. SQL Server gibt NULL zurück.

  • 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, überprüft jedoch nicht auf NULL-Werte.

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:

  • YES

  • NO

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:

  • YES

  • NO

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 (Es wird durch "Konvertieren TO_CHAR(Datum, Format)" definiert).

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 bietet eine RETURNING-Klausel als Möglichkeit, 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 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

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 (diese Option ist nur beim Konvertieren in SQL Server 2012 und SQL Server 2014 verfügbar).

  • Verwenden des SSMA-Sequenzgenerators.

  • Verwenden der Spaltenidentität.

Die Standardoption beim Konvertieren in SQL Server 2012 oder SQL Server 2014 ist die Verwendung des SQL Server-Sequenzgenerators. Sql Server 2012 und SQL Server 2014 unterstützen jedoch nicht das Abrufen des aktuellen Sequenzwerts (z. B. die methode der DB2-Sequenzkurzmethode). Eine Anleitung zur Migration 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. Dies ist die Standardoption, wenn Sie vor 2012 in SQL Server konvertieren.

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.

Weitere Informationen

User Interface Reference (DB2ToSQL)