Поделиться через


O2SS0221. Вызов последовательности удостоверений NEXTVAL не поддерживается (ошибка)

В этой статье рассматриваются некоторые причины, по которым Помощник по миграции SQL Server (SSMA) для Oracle не преобразует процедуры со ссылкой на функцию последовательностиNEXTVAL.

Общие сведения

A SEQUENCE — это независимый объект базы данных в Oracle, который автоматически создает уникальные целые числа, как правило, для первичных и внешних значений. Используется NEXTVAL для доступа к следующему значению указанной последовательности.

При преобразовании SEQUENCE объектов SSMA может использовать два метода: " Последовательность в последовательность" и "Последовательность" в удостоверение. При преобразовании SSMA в последовательность создается соответствующий SEQUENCE объект в схеме SQL Server для каждой последовательности Oracle. В режиме последовательности к удостоверению SSMA не создает SEQUENCE объекты в SQL Server, поэтому вызовы последовательности Oracle приводят к NEXTVAL сообщению об ошибке.

Пример

Рассмотрим следующий пример:

CREATE OR REPLACE PROCEDURE proc1
AS
    t1 NUMBER;
BEGIN
    SELECT customers_seq.NEXTVAL INTO t1 FROM DUAL;
END;

Здесь есть хранимая процедура, которая пытается получить следующее значение для последовательности customers_seq. Если режим последовательности к удостоверению используется в SSMA, создается следующее сообщение об ошибке:

O2SS0221. Вызов последовательности удостоверений NEXTVAL не поддерживается

Возможные решения

Чтобы устранить эту ошибку, переопределите код PL/SQL, чтобы исключить доступ NEXTVALк, или измените параметры проекта SSMA на создание SEQUENCE объектов в SQL Server вместо столбцов удостоверений. Чтобы сделать это позже, выполните следующие действия:

  1. Выберите меню "Сервис" и выберите "Проект" Параметры.
  2. Затем выберите вкладку "Общие ".
  3. Теперь в группе преобразования последовательности установите генератор последовательностей в использование генератора последовательностей SQL Server.
  4. Примените эти параметры и нажмите кнопку "ОК".