Compartilhar via


O2SS0221: Chamada para sequência de identidade NEXTVAL não suportada (erro)

Este artigo aborda alguns dos motivos pelos quais o SQL Server Migration Assistant (SSMA) para Oracle não converte procedimentos com referência à função da NEXTVAL sequência.

Tela de fundo

A SEQUENCE é um objeto de banco de dados independente no Oracle, que cria automaticamente inteiros exclusivos normalmente para valores de chave primária/estrangeiros. A NEXTVAL é usado para acessar o próximo valor da sequência especificada.

Ao converter SEQUENCE objetos, o SSMA pode usar duas técnicas, ou seja , Sequence to Sequence e Sequence to Identity. Quando o SSMA converte em sequência, ele cria um objeto correspondente SEQUENCE no esquema do SQL Server para cada sequência Oracle. No modo Sequence to Identity, o SSMA não cria nenhum SEQUENCE objeto no SQL Server, portanto, as chamadas para NEXTVAL a sequência Oracle resultam em uma mensagem de erro.

Exemplo

Considere o seguinte exemplo:

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

Aqui temos um procedimento armazenado que tenta recuperar o próximo valor para a sequência customers_seq. Se o modo Sequence to Identity for usado no SSMA, a seguinte mensagem de erro será produzida:

O2SS0221: Chamada para sequência de identidade NEXTVAL não suportada

Possíveis soluções

Para resolver esse erro, reescreva o código PL/SQL para eliminar o acesso ao NEXTVAL, ou altere as configurações do projeto SSMA para produzir SEQUENCE objetos no SQL Server, em vez de colunas de identidade. Para fazer o posterior:

  1. Selecione o menu Ferramentas e selecione Configurações do projeto.
  2. Em seguida, selecione a guia Geral .
  3. Agora, em Conversão de sequência, grupo de grupo, Converta gerador de sequência para usar o gerador de sequência do SQL Server.
  4. Aplique essas configurações e selecione OK.