Pergunta

Eu estou olhando para um erro de uma das nossas aplicações web, e foi chamando um procedimento armazenado que foi responsável por atualizar um registro no banco de dados.

Este procedimento armazenado trabalhou durante semanas, sem problemas. Então um dia ele começou a jogar erros, durante a depuração encontramos a causa de estar dentro do procedimento armazenado.

É basicamente tinha uma declaração como esta

Begin
  // Do Stuff

  Set
End

Assim, o SET nunca realmente definir qualquer coisa. Por alguma razão isto corre em perfeitamente bem no nosso servidor, e estava funcionando muito bem no servidor cliente até hoje cedo, quando decidiu começar a reclamar. (Erro de sintaxe incorreta)

Existe algum tipo de configuração de SQL Server que faria com que esta súbita mudança de comportamento?

Clarificação - O SET sempre esteve nos procedimentos. E executando um SET por si só, ou como uma única declaração em um procedimento armazenado faz de fato funcionam para mim. Este é o problema, ele não deve trabalho. Então, há algo que faria com que ele trabalho quando deveria estar falhando?

Foi útil?

Solução

Um procedimento com um SET como que normalmente não compilar, mesmo se o SET não pode ser alcançado:

alter procedure dbo.testproc as
    begin
    return 1;
    set
    end

Incorrect syntax near the keyword 'SET'.

Uma vez que o alter falhar, eu não posso ver como o procedimento poderia acabar em seu banco de dados em primeiro lugar?

Ou talvez você estava executando em modo de compatibilidade SQL Server 2000 (que ainda permitiu isso.) Alterar o MDOE compatibilidade para SQL Server 2005 ou superior, então, quebrar o procedimento.

Outras dicas

Executar "SET", por si só, irá gerar um erro. I foi originalmente indo para sugerir que você pode ter ramificações de código (IFs, devoluções, GOTOs, etc.) que causaram ser alcançado a linha de nunca ... mas eu acho que eu não posso criar um procedimento armazenado que contém esse como um stand- sozinho comunicado.

Se você roteiro o procedimento e tentar recriá-lo (com um nome diferente), ele pode ser criado?

Talvez valesse a pena postagem esse script, ou como muito do que como o seu são confortáveis ??tomada pública.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top