ADO可能忽略了SQL Server的错误

时间:2016-11-08 15:27:00

标签: vbscript asp-classic ado

这是一些SQL ...

UPDATE table1 SET date = GETDATE() WHERE id = @id

IF @@ROWCOUNT = 0
BEGIN;
    THROW 50004, 'Row not updated.', 1;
END

如果我在管理工作室中使用虚假ID运行此操作,我会...

  

(0行(s)受影响)Msg 50004,Level 16,State 1,Procedure   MyStoredProcedure,第50行没有更新。

如果我从ASP Classic运行此命令,Err.Number为0且连接的错误集合为空。

如果我删除UPDATE语句,则会注册错误。

为什么ADO会在更新后忽略错误?

1 个答案:

答案 0 :(得分:1)

我将SET NOCOUNT ON添加到存储过程的开头。

Here,它说......

  

SET NOCOUNT ON可防止将DONE_IN_PROC消息发送到   存储过程中每个语句的客户端。

因此,可能是DONE_IN_PROC消息导致后续错误被跳过。