Teilen über


Projekteinstellungen (Konvertierung) (OracleToSQL)

Die Seite "Konvertierung " des Dialogfelds "Projekteinstellungen " enthält Einstellungen, die anpassen, wie SSMA die Oracle-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 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".

Integrierte Funktionen und bereitgestellte Pakete

Begriff Definition
Zählen-Funktion in COUNT_BIG konvertieren Wenn Ihre COUNT Funktionen wahrscheinlich Werte zurückgeben, die größer als 2.147.483.647 sind, was 231-1 ist, sollten Sie die Funktionen COUNT_BIGin konvertieren.

Wenn Sie "Ja" auswählen, konvertiert SSMA alle Verwendungen in COUNT_BIGCOUNT .

Wenn Sie "Nein" auswählen, bleiben die Funktionen erhalten.COUNT 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 SUBSTR-Funktionsaufrufen in SUBSTRING-Funktionsaufrufe SSMA kann Oracle-Funktionsaufrufe SUBSTR abhängig von der Anzahl der Parameter in SQL Server-Funktionsaufrufe substring 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 SUBSTR SSMA Funktionsaufrufe, die drei Parameter in SQL Server substringverwenden. 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 TO_CHAR(Datum, Format)-Funktionsaufrufe SSMA kann Oracle TO_CHAR(date, format) in Prozeduren aus dem ssma_oracle Schema konvertieren.

Wenn Sie die Funktion "Verwenden TO_CHAR_DATE" auswählen, konvertiert SSMA die TO_CHAR(date, format) TO_CHAR_DATE Funktion mithilfe der englischen Sprache für die Konvertierung.

Wenn Sie "Using TO_CHAR_DATE_LS function (NLS care)" auswählen, konvertiert SSMA die TO_CHAR(date, format) TO_CHAR_DATE_LS Funktion mithilfe der Sitzungssprache für die Konvertierung in die Funktion.

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)
Generieren eines Fehlers für DBMS_SQL. PARSE Wenn Sie "Fehler" auswählen, generiert SSMA fehler bei der KonvertierungDBMS_SQL.PARSE.

Wenn Sie "Warnung" auswählen, generiert SSMA warnungen bei der KonvertierungDBMS_SQL.PARSE.

Wenn Sie im Feld "Modus " einen Konvertierungsmodus auswählen, wendet SSMA die folgende Einstellung an:
Standard/Optimistisch/Vollmodus: Fehler
Verwenden von ISNULL in CONCAT-Funktionsaufrufen ISNULL Anweisung wird in CONCAT Funktionsaufrufen zum Emulieren des Oracle-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 REPLACE-Funktionsaufrufen ISNULL Anweisung wird in REPLACE Funktionsaufrufen zum Emulieren des Oracle-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(date, format) in systemeigene Konvertierungsfunktion.

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

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

Standard-/Optimistischer Modus: Ja
Vollmodus: Nein

Konvertierungsbenachrichtigungen

Begriff Definition
Generieren von Nachrichten zu 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

Begriff Definition
Umwandeln von ROWNUM-Ausdrücken als ganze Zahlen Wenn SSMA Ausdrücke konvertiert ROWNUM , konvertiert es den Ausdruck in eine TOP Klausel, gefolgt vom Ausdruck. Das folgende Beispiel zeigt ROWNUM in einer Oracle-Anweisung DELETE :

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

Dies TOP 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 Oracle-Schemas SQL Server-Schemas zugeordnet werden. In dieser Einstellung stehen zwei Optionen zur Verfügung:

Schema für Datenbank: In diesem Modus wird Oracle-Schema sch1 standardmäßig dbo dem SQL Server-Schema in der SQL Server-Datenbank sch1zugeordnet.

Schema für Schema: In diesem Modus wird Oracle-Schema sch1 standardmäßig sch1 dem 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
Emulieren des Oracle-Nullverhaltens in ORDER BY-Klauseln NULL Werte werden in SQL Server und Oracle 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 Oracle NULL sind Werte die höchsten Werte in einer sortierten Liste. Standardmäßig NULL werden Die Werte zuletzt in einer aufsteigenden Reihenfolgenliste angezeigt.

Oracle verfügt NULLS FIRST über Klauseln und NULLS LAST Klauseln, mit denen Sie ändern können, wie Oracle s bestellt NULL.

SSMA kann das Oracle-Verhalten ORDER BY 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 Oracle-Anweisung so, dass das Oracle-Verhalten ORDER BY emuliert wird.

Wenn Sie "Nein" auswählen, ignoriert SSMA Oracle-Regeln und generiert eine Fehlermeldung, wenn sie auf die NULLS FIRST Und-Klauseln NULLS LAST trifft.

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 Oracle 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 einen Aufruf einer speziellen db_error_exact_one_row_check Prozedur hinzu. Diese Prozedur emuliert die NO_DATA_FOUND und TOO_MANY_ROWS Ausnahmen. Dies ist der Standardwert und ermöglicht die Wiedergabe des Oracle-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 Anweisung in einer benutzerdefinierten Funktion auftritt, dieses Modul in eine gespeicherte Prozedur konvertiert wird, da das SELECT 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
Fixratgeber aktivieren Wenn diese Option aktiviert ist, versucht SSMA, aus den Änderungen zu lernen, die Sie im T-SQL-Zielcode vornehmen, und schlägt potenzielle Codekorrekturen an anderen Stellen vor, an denen ein ähnliches Muster angewendet werden kann.

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

Standard/Optimistisch/Vollmodus: Ja
Generieren von Spaltenaliasen für konstanten Ausdruck Wenn ein Ausdruck in der SELECT Liste einen Alias fehlt, kann SSMA konstanten Alias (z expr1. B. , expr2usw.) generieren oder einen Ausdruck selbst als Alias verwenden. Da Ausdrücke ziemlich lang sein können und die Länge des Spaltennamens begrenzt ist, ist es sicherer, konstanten Basisnamen für solche Aliase zu verwenden. Obwohl es sich um eine sicherere Option handelt, ist es manchmal nicht möglich, da es externe Abhängigkeiten zum resultierenden Dataset geben könnte. In diesen Fällen möchten Sie Möglicherweise Spalten entsprechend ihren Wertausdrücken benennen, ähnlich wie das Verhalten von Oracle.

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

Standard-/Optimistischer Modus: Ja
Vollmodus: Nein
Erweiterte Eigenschaften weglassen Wenn diese Option aktiviert ist, fügt SSMA den Objekten, die sie in der Zieldatenbank erstellt, keine erweiterten Eigenschaften hinzu.

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

Standard-/Optimistisch/Vollmodus: Nein
Übersetzen von Fehlercodes Wenn diese Option aktiviert ist, wird die Fehlernummer auf der ZIEL-SQL Server-Seite in Oracle-Fehlercode übersetzt, wenn die Zuordnung gefunden wird.

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

Standardmodus/Vollmodus: Ja
Optimistischer Modus: Nein
Vollständige Typspezifikation für Typverweise verwenden Wenn diese Option aktiviert ist, berücksichtigt SSMA die vollständige Typspezifikation (einschließlich Skalierung und Genauigkeit) für Routineparameter und Rückgabewerte. Oracle lässt keine Datentypargumente für Routineparameter zu, aber es gibt Fälle, in denen sie implizit abgeleitet werden können, z. B. wenn %TYPE und %ROWTYPE Attribute verwendet werden. In solchen Fällen kann SSMA beim Konvertieren in SQL Server die vollständige Typspezifikation (einschließlich Genauigkeit und Skalierung) verwenden.

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

Standard-/Optimistischer Modus: Ja
Vollmodus: Nein
Verwenden von ISNULL in Zeichenfolgenverkettung Oracle und SQL Server geben unterschiedliche Ergebnisse zurück, wenn Zeichenfolgenverkettungen Werte enthalten NULL . Oracle behandelt den NULL Wert wie einen leeren Zeichensatz. SQL Server gibt zurück NULL.

Wenn Sie "Ja" auswählen, ersetzt SSMA das Oracle-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:

Standard/Optimistisch/Vollmodus: Ja

Konvertierung von Objekten

Begriff Definition
Konvertieren von Fremdschlüsseln mit SET NULL-referenzieller Aktion in Spalte, die NICHT NULL ist Oracle 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 Oracle. Sie müssen jedoch manuelle Änderungen vornehmen, bevor Sie die Einschränkung auf SQL Server laden. Sie können NO ACTION z. B. anstelle von SET NULL.

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 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 Oracle-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 Oracle-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
Konvertierung lokaler Module Definiert den Typ des geschachtelten Oracle-Unterprograms (deklariert in eigenständiger gespeicherter Prozedur oder Funktion) Konvertierung.

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

Datensatzkonvertierung

Begriff Definition
Konvertieren von Datensätzen als Liste getrennter Variablen SSMA kann Oracle-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
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

Begriff Definition
Konvertieren der RETURNING-Klausel in DELETE-Anweisung in OUTPUT Oracle 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 RETURNING SSMA Klauseln in Anweisungen in DELETE OUTPUT Klauseln. Da Trigger für eine Tabelle Werte ändern können, kann der zurückgegebene Wert in SQL Server anders sein als in Oracle.

Wenn Sie "Nein" auswählen, generiert SSMA eine SELECT Anweisung, bevor DELETE Anweisungen zurückgegebene Werte abgerufen werden.

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 Oracle bietet eine RETURNING Klausel als Möglichkeit, eingefügte Werte sofort 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 OUTPUTin . Da Trigger für eine Tabelle Werte ändern können, kann der zurückgegebene Wert in SQL Server anders sein als in Oracle.

Wenn Sie "Nein" auswählen, emuliert SSMA die Oracle-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 Oracle 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 RETURNING SSMA Klauseln in Anweisungen in UPDATE OUTPUT Klauseln. Da Trigger für eine Tabelle Werte ändern können, kann der zurückgegebene Wert in SQL Server anders sein als in Oracle.

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

ROWID-Generierung

Begriff Definition
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 GUIDs als Einfügewerte. 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 hinzu, deren ROWID Trigger für die Tabellen hinzugefügt werden, die Trigger enthalten.

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 für die ROWID generierte Spalte 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 ROWID Spalte generiert.

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

Standard/Optimistisch/Vollmodus: Ja

Sequenz- und Identitätskonvertierung

Begriff Definition
Identität konvertieren als Oracle bietet mehrere Konfigurationsoptionen für Identitätsspalten. Einige dieser Optionen werden vom Identitätsfeature in SQL Server nicht unterstützt.

Eine Methode zum Beibehalten dieser Optionen besteht darin, die Identität als Sequenz zu konvertieren.

Wenn Sie "Sequenz" auswählen, werden Oracle-Identitätsspalten nicht mehr in SQL-Identitätsspalten konvertiert. Stattdessen wird eine Sequenz erstellt und verwendet, um Standardwerte für die Spalte zu generieren.

Wenn Sie "Identität" auswählen , werden Oracle-Identitätsspalten in SQL-Identitätsspalten konvertiert. Nicht unterstützte Optionen werden nicht konvertiert.

Wenn Sie "Optimal anpassen" auswählen, bestimmt SSMA je nach Konfiguration der Oracle-Identitätsspalte die beste Konvertierungsmethode (Identität oder Sequenz).
Sequenzgenerator konvertieren In Oracle 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 ist die Verwendung des SQL Server-Sequenzgenerators. Sql Server unterstützt jedoch nicht das Abrufen des aktuellen Sequenzwerts (z. B. die der Oracle-Sequenzmethode CURRVAL ). Eine Anleitung zur Migration der Oracle-Sequenzmethode CURRVAL finden Sie auf der Blogwebsite des SSMA-Teams.

SSMA bietet auch eine Option zum Konvertieren der Oracle-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 Oracle Table angeben.
Konvertieren von CURRVAL außerhalb von Triggern Nur sichtbar, wenn der Convert Sequence-Generator auf "Verwenden der Spaltenidentität" festgelegt ist. Da Oracle Sequences Objekte getrennt von Tabellen 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 in der konvertierten Sequenz CURRVAL mit einer Warnung.

Wenn Sie "Nein" auswählen, markiert SSMA alle Verweise auf externe Trigger in der konvertierten Sequenz CURRVAL mit einem Fehler.

Konvertierung von Anweisungen

Begriff Definition
Konvertierung der MERGE-Anweisung Wenn Sie using INSERT, UPDATE, DELETE statement, SSMA converts MERGE statement into INSERT, , UPDATEstatements DELETE .

Wenn Sie "Using MERGE"-Anweisung auswählen, konvertiert MERGE SSMA die Anweisung in MERGE Eine 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. 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
Konvertieren von FORALL-Anweisung in WHILE-Anweisung Definiert, wie SSMA Schleifen für PL/SQL-Auflistungselemente behandelt FORALL .

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 nodes() der 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 Funktionsaufrufen in Prozeduraufrufe Einige Oracle-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 SELECT einer 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 Anweisungen konvertierenLOCK TABLE, die Konvertierungsfehlermeldungen SUBPARTITIONenthaltenPARTITION, oder NOWAIT @dblinkKlauseln enthalten.

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 Oracle-Sperrmodi konvertiert:

Oracle Lock Mode

ROW SHARE
ROW EXCLUSIVE
SHARE UPDATE = ROW SHARE
SHARE
SHARE
EXCLUSIVE

SQL Server-Tabellenhinweis

ROWLOCK, HOLDLOCK
ROWLOCK, XLOCK, HOLDLOCK
ROWLOCK, HOLDLOCK
TABLOCK, HOLDLOCK
TABLOCK, XLOCK, HOLDLOCK
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 Oracle kann die OPEN .. FOR Anweisung verwendet werden, um einen Resultset an den Parameter des Typs OUT REF CURSOReines Unterprogramms 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 Transaktionsverarbeitungsanweisungen SSMA kann Oracle Transaktionsverarbeitungsanweisungen konvertieren:

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

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

Hinweis: Oracle öffnet Transaktionen implizit. Um dieses Verhalten auf SQL Server zu emulieren, müssen Sie Anweisungen manuell an der Stelle hinzufügen BEGIN TRANSACTION , an der Ihre Transaktionen beginnen sollen. Alternativ können Sie den SET IMPLICIT_TRANSACTIONS ON Befehl am Anfang der Sitzung ausführen. SSMA wird automatisch hinzugefügt SET IMPLICIT_TRANSACTIONS ON , 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

Weitere Informationen

User Interface Reference (OracleToSQL) (Verweis auf die Benutzeroberfläche (OracleToSQL))