¿Por qué es un trailing CONJUNTO incoherente de tirar un error en SQL?
-
13-09-2019 - |
Pregunta
Estoy buscando a un error de una de nuestras aplicaciones web, y se llama a un procedimiento almacenado que fue responsable de la actualización de un registro en la base de datos.
Este procedimiento almacenado ha trabajado durante semanas sin problemas.Entonces, un día ella comenzó a tirar errores, mientras que la depuración hemos encontrado la causa a estar dentro del procedimiento almacenado.
Básicamente había una declaración como esta
Begin
// Do Stuff
Set
End
Por lo que el SET
en realidad nunca ponga nada.Por alguna razón esto funciona perfectamente bien en nuestro servidor y se ejecuta bien en un servidor de cliente hasta hoy cuando se decidió a empezar a quejarse.(Incorrecto error de Sintaxis)
Hay algún tipo de configuración de SQL Server que podría provocar este cambio repentino en el comportamiento?
Aclaración - La SET
siempre ha sido en los procedimientos.Y la ejecución de un SET
por sí mismo, o como una única declaración en un procedimiento almacenado no en el hecho de trabajar para mí.Este es el problema, no trabajo.¿Hay algo que podría causar que el trabajo, cuando debería estar fallando?
Solución
A procedimiento con un SET
como que normalmente fallará para compilar, incluso si el SET
no se puede alcanzar:
alter procedure dbo.testproc as
begin
return 1;
set
end
Incorrect syntax near the keyword 'SET'.
Desde falla el altar, no puedo ver cómo el procedimiento podría terminar en su base de datos en el primer lugar?
O tal que se estaba ejecutando en modo de compatibilidad para SQL Server 2000 (que todavía se permite esto.) Cambio de la Mdoe compatibilidad con SQL Server 2005 o superior sería entonces romper el procedimiento.
Otros consejos
Al ejecutar "SET", por sí mismo, se generará un error. Originalmente iba a sugerir que podría tener ramificaciones de código (FI, devoluciones, GOTOs, etc.) que causaron la línea para no ser alcanzado ... pero me parece que no puedo crear un procedimiento almacenado que contiene esto como un stand- sola declaración.
¿Puede crearseSi la escritura a cabo el procedimiento y tratar de volver a crearlo (con un nombre diferente),?
Podría valer la pena publicar ese guión, o tanto él como su son decisiones públicas cómoda.