无法编译似乎正在运行的程序

时间:2015-02-03 21:57:44

标签: sql-server stored-procedures

我有一个非常奇怪的案例。有一个夜间运行的触发器。我知道它会运行,因为我每晚都收到一封电子邮件。 这个过程是一个工作链的一部分,如果它失败了,整个链条都会失败,我应该在我的手机上收到警报。 话虽这么说,当我尝试编译这段特定代码时,它会出错。我得到一个无效的列名RowID。

我想知道我面前的版本是不是服务器上的当前版本还是什么东西?这个代码怎么能每天运行,但不能编译......

这里是代码的前几行。我应该指出,我继承了这一点,并没有写出来。从倒数第二行发生错误。提到的表没有rowid列。

set nocount on
-- declare all variables
DECLARE @iNextRowId int,
 @iCurrentRowId int,
 @iLoopControl int,
 @PRODUCT VARCHAR(8),
 @MEDIACODE VARCHAR(8),
 @QTY INTEGER,
 @LISTNAME VARCHAR(50),
 @LISTNAME1 VARCHAR(50),
 @LISTNAME2 VARCHAR(50),
 @SLISTNAME VARCHAR(2)


-- Initialize variables
SELECT @iLoopControl = 1
SELECT @iNextRowId = MIN(RowId)
FROM   server..OrdTable ORD1

2 个答案:

答案 0 :(得分:1)

您需要检查服务器。我们不可能告诉你,你的环境目前是什么。

您可以致电:

exec sp_helptext 'procedure_name'

查看您的实时环境中当前proc中包含的内容。

如果当前的直播过程是相同的,那么它可能是一个权限问题,或者链条没有像你想象的那样工作。

答案 1 :(得分:0)

我明白了。我在这里继承了一些漂亮的史诗spagetti代码。 在此作业通过的早期proc中,它向表中添加一列以允许它循环,然后删除列。我收到错误,因为我必须先添加列...