Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
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:
- Selecione o menu Ferramentas e selecione Configurações do projeto.
- Em seguida, selecione a guia Geral .
- 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.
- Aplique essas configurações e selecione OK.
Mensagens de conversão relacionadas
- O2SS0188: Sequência não encontrada nos metadados de origem (erro)
- O2SS0214: A coluna tem sequência acoplada, mas a sequência não foi encontrada nos metadados de origem
- O2SS0217: Chamada para sequência de identidade CURRVAL não suportada (erro)