Freigeben über


Project-Einstellungen (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 von COUNT in COUNT_BIG.

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
Konvertiere Funktionsaufrufe von TO_CHAR(Datum, Format) SSMA kann Oracle TO_CHAR(date, format) in Prozeduren aus dem ssma_oracle Schema konvertieren.

Wenn Sie die Funktion TO_CHAR_DATE auswählen, konvertiert SSMA die TO_CHAR(date, format) zu der TO_CHAR_DATE Funktion unter Verwendung der englischen Sprache.

Wenn Sie die TO_CHAR_DATE_LS-Funktion (NLS care) verwenden, konvertiert SSMA die TO_CHAR(date, format)-Funktion mithilfe der Sitzungssprache in die TO_CHAR_DATE_LS-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)
Fehler erzeugen 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 bei der Konvertierung DBMS_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 verwendet, um das Verhalten von Oracle nachzuahmen. 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 REPLACE-Funktionsaufrufen ISNULL Anweisung wird in REPLACE Funktionsaufrufen verwendet, um das Verhalten von Oracle nachzuahmen. 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(date, format) in systemeigene Konvertierungsfunktion.

Wenn Sie Nein auswählen, konvertiert SSMA die TO_CHAR(date, format) in TO_CHAR_DATE oder TO_CHAR_DATE_LS (dies wird durch die 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

Konvertierungsnachrichten

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

Verschiedene Optionen

Begriff Definition
Umwandeln von ROWNUM-Ausdrücken als ganze Zahlen Wenn SSMA ROWNUM-Ausdrücke konvertiert, wandelt es den Ausdruck in eine TOP-Klausel um, gefolgt von dem 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

Das TOP erfordert, dass der TOP-Klauselausdruck 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 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 das Oracle-Schema sch1 standardmäßig dem SQL Server-Schema sch1 in der standardmäßigen SQL Server-Datenbank zugeordnet, die im Verbindungsdialog angegeben 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 bezeichnen NULL Werte die niedrigsten Werte in einer sortierten Liste. In einer aufsteigenden Liste NULL werden die Werte zuerst angezeigt.

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

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

SSMA kann das Oracle-Verhalten ORDER BY emulieren, indem es nach NULL Werten sucht. 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
Nachahmen von Ausnahmen bei der Zeilenanzahl 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 db_error_exact_one_row_check Anweisung einen Aufruf einer speziellen SELECT 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
Fix-Assistent 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
Spaltenaliases für konstante Ausdrücke generieren Wenn ein Ausdruck in der SELECT Liste keinen Alias hat, kann SSMA konstante Aliasse (z.B. expr1, expr2, usw.) generieren oder den 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 einen Oracle-Fehlercode übersetzt, falls eine Zuordnung vorliegt.

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. Zum Beispiel können Sie NO ACTION anstelle von SET NULL wä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 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

Ansichten und Objektansichten

Gespeicherte Prozeduren und Funktionen

Materialisierte Ansichten

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

Sequenzen

Pakete

Java-Klassenschemaobjekte

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 die Art der Konvertierung für geschachtelte Oracle-Unterprogramme, die in einer eigenständigen gespeicherten Prozedur oder Funktion deklariert sind.

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
Verwenden Sie SELECT...FOR XML beim Konvertieren von SELECT...INTO für eine 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

Umwandlung der RETURNING-Klausel

Begriff Definition
Konvertiere die RETURNING-Klausel in der DELETE-Anweisung zu 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 SSMA Klauseln in RETURNING-Anweisungen zu DELETE-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, damit vor den 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
Konvertiere die RETURNING-Klausel einer 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 Klausel in einer RETURNINGINSERT-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 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
Die RETURNING-Klausel in einer UPDATE-Anweisung in OUTPUT konvertieren 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 SSMA Klauseln in RETURNING-Anweisungen zu UPDATE-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 eine ROWID-Spalte für Tabellen mit Triggern hinzu und fügen Sie ROWID für die Tabellen hinzu, die Trigger enthalten.

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

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

Vollmodus: Ja
Eindeutigen Index für ROWID-Spalte generieren Gibt an, ob SSMA eine eindeutige Indexspalte für die ROWID generierte Spalte erstellt 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 markiert sie als Fehler, falls das Auskommentieren Fehler hervorrufen 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
Umwandlung der MERGE-Anweisung Wenn Sie die Anweisung INSERT, UPDATE, DELETE verwenden, wandelt SSMA die MERGE-Anweisung in INSERT, UPDATE und DELETE-Anweisungen um.

Wenn Sie die Anweisung Using MERGE statement auswählen, wandelt SSMA die MERGE Anweisung in eine MERGE Anweisung innerhalb von SQL Server um.

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

Standard-/Optimistisch-/Vollmodus: Verwendung 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 auslässt, fügt SSMA das Schlüsselwort default an der richtigen Stelle in die Funktion ein und ruft die Funktion 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 FORALL-Schleifen für PL/SQL-Sammlungselemente 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 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 belä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
Konvertiere LOCK TABLE-Anweisungen SSMA kann viele LOCK TABLE Anweisungen in Tabellenhinweise umwandeln. SSMA kann keine LOCK TABLE Anweisungen konvertieren, die PARTITION, SUBPARTITION, @dblink und NOWAIT Klauseln enthalten, und wird solche 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 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
Konvertiere OPEN-FOR-Anweisungen für REF CURSOR OUT-Parameter In Oracle kann die OPEN .. FOR-Anweisung verwendet werden, um ein Resultset an den Parameter des Typs OUT, REF CURSOR eines 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
Transaktionsverarbeitungsanweisungen konvertieren 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.

Anmerkung: Oracle öffnet implizit Transaktionen. 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 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

Siehe auch

User Interface Reference (OracleToSQL)