Freigeben über


O2SS0217: Aufruf der Identitätssequenz CURRVAL nicht unterstützt (Fehler)

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_seqabzurufen. 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 CURRVALbeseitigen, 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:

  1. Wählen Sie das Menü "Extras" und dann "Project Einstellungen" aus.
  2. Wählen Sie dann die Registerkarte "Allgemein " aus.
  3. Legen Sie nun unter "Sequenzkonvertierungsgruppe Convert Sequence Generator" in den SQL Server-Sequenzgenerator fest.
  4. Wenden Sie diese Einstellungen an, und wählen Sie "OK" aus.