我看从我们的Web应用程序的一个错误,它被调用存储过程负责更新数据库中的记录。

此存储过程已经工作了几个星期没有问题。后来有一天,它开始抛出错误,在调试时我们发现原因是存储过程中。

它基本上有这样的陈述

Begin
  // Do Stuff

  Set
End

所以SET实际上从未设定任何东西。出于某种原因,这个运行在我们的服务器上完全没有问题,并在客户端服务器上运行良好,今天早些时候,当它决定开始抱怨,直到。 (不正确的语法错误)

有没有会导致这种行为突然改变任何类型的SQL服务器设置的?

<强>澄清 - 的SET一直中的过程。并通过自身运行SET,或作为存储过程的唯一声明是否确实为我工作。这就是问题所在,它的不应该的工作。那么,有没有任何会导致它时,它应该没有工作?

有帮助吗?

解决方案

使用像这样的SET的过程通常会无法编译,即使SET不能达到:

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

Incorrect syntax near the keyword 'SET'.

由于ALTER失败,我看不出在过程可以在数据库中第一的位置结束?

或者,也许你是在兼容模式下的SQL Server 2000上运行(这仍允许这一点。)更改兼容性MDOE到SQL Server 2005或再高些会破坏程序。

其他提示

执行“SET”,其本身会产生错误。最初我建议你可能有分支导致该行从未达到码(国际单项体育联合会,退货的GOTO等)...但我发现我不能创建包含此作为一项独立的存储过程单独讲话。

如果您编写脚本程序,并尝试重新创建(使用不同的名称),可以把它创造出来吗?

也许值得张贴的脚本,或尽可能多的它作为您的舒适决策公开。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top