Compartir a través de


O2SS0221: no se admite la secuencia de identidadES NEXTVAL (error)

En este artículo se describen algunos de los motivos por los que SQL Server Migration Assistant (SSMA) para Oracle no convierte procedimientos con referencia a la función de la NEXTVAL secuencia.

Fondo

Es SEQUENCE un objeto de base de datos independiente de Oracle, que crea automáticamente enteros únicos normalmente para los valores clave o externos principales. NEXTVAL Se usa para tener acceso al siguiente valor de la secuencia especificada.

Al convertir SEQUENCE objetos, SSMA puede usar dos técnicas, es decir , Secuencia a secuencia y Secuencia a identidad. Cuando SSMA se convierte en secuencia, crea un objeto correspondiente SEQUENCE en el esquema de SQL Server para cada secuencia de Oracle. En el modo Secuencia a identidad , SSMA no crea ningún SEQUENCE objeto en SQL Server, por lo que llama a NEXTVAL para la secuencia de Oracle produce un mensaje de error.

Ejemplo

Considere el ejemplo siguiente:

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

Aquí tenemos un procedimiento almacenado que intenta recuperar el siguiente valor para la secuencia customers_seq. Si el modo Secuencia a identidad se usa en SSMA, se genera el siguiente mensaje de error:

O2SS0221: no se admite la llamada a la secuencia de identidadES NEXTVAL

Posibles soluciones

Para resolver este error, vuelva a escribir el código PL/SQL para eliminar el acceso a NEXTVALo cambie la configuración del proyecto SSMA para generar SEQUENCE objetos en SQL Server, en lugar de columnas de identidad. Para hacer lo siguiente:

  1. Seleccione el menú Herramientas y seleccione Proyecto Configuración.
  2. A continuación, seleccione la pestaña General .
  3. Ahora, en Grupo de conversión de secuencia, establezca Convertir generador de secuencia en Uso del generador de secuencias de SQL Server.
  4. Aplique esta configuración y seleccione Aceptar.