Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
In diesem Artikel werden einige der Gründe erläutert, warum der SQL Server-Migrations-Assistent (SSMA) für Oracle keine Prozeduren mit Verweis auf die Funktion der CURRVAL
Sequenz konvertiert.
Hintergrund
A SEQUENCE
ist ein unabhängiges Datenbankobjekt in Oracle, das automatisch eindeutige ganze Zahlen erstellt, die normalerweise für Primärschlüssel-/Fremdwerte verwendet werden. A CURRVAL
wird verwendet, um auf den aktuellen Wert der angegebenen Sequenz zuzugreifen.
Beim Konvertieren von SEQUENCE
Objekten kann SSMA zwei Techniken verwenden, nämlich Sequence to Sequence und Sequence to Identity. Wenn SSMA in eine Sequenz konvertiert wird, wird für jede Oracle-Sequenz ein entsprechendes SEQUENCE
Objekt im SQL Server-Schema erstellt. Im Sequenz-zu-Identitätsmodus erstellt SEQUENCE
SSMA keine Objekte in SQL Server, ergibt daher Aufrufe für CURRVAL
die Oracle-Sequenz eine Fehlermeldung.
Beispiel
Betrachten Sie das folgende Beispiel:
CREATE OR REPLACE PROCEDURE proc1
AS
t1 NUMBER;
BEGIN
SELECT customers_seq.CURRVAL INTO t1 FROM DUAL;
END;
Hier haben wir eine gespeicherte Prozedur, die versucht, den aktuellen Wert für die Sequenz customers_seq
abzurufen. Wenn Sequence to Identity-Modus in SSMA verwendet wird, wird die folgende Fehlermeldung erzeugt:
O2SS0217: Aufruf der Identitätssequenz CURRVAL wird nicht unterstützt
Mögliche Abhilfen
Um diesen Fehler zu beheben, schreiben Sie entweder den PL/SQL-Code um, um den Zugriff zu CURRVAL
beseitigen, oder ändern Sie die SSMA-Projekteinstellungen, um Objekte in SQL Server zu erzeugen SEQUENCE
, anstelle von Identitätsspalten. Gehen Sie zu einem späteren Zeitpunkt wie möglich vor:
- Wählen Sie das Menü "Extras" und dann "Project Einstellungen" aus.
- Wählen Sie dann die Registerkarte "Allgemein " aus.
- Legen Sie nun unter "Sequenzkonvertierungsgruppe Convert Sequence Generator" in den SQL Server-Sequenzgenerator fest.
- Wenden Sie diese Einstellungen an, und wählen Sie "OK" aus.
Verwandte Konvertierungsnachrichten
- O2SS0188: Sequenz wurde in Den Quellmetadaten nicht gefunden (Fehler)
- O2SS0214: Spalte weist gebundene Sequenz auf, aber die Sequenz wurde in Den Quellmetadaten nicht gefunden.
- O2SS0221: Aufruf der Identitätssequenz NEXTVAL nicht unterstützt (Fehler)