我有一个SQL脚本,它做了很多更新。当我从文本文件中检索脚本(在经典ASP页面中)并尝试执行它时,它似乎不会应用我期望的所有更新,如果我将内容复制并粘贴到Management Studio,查询工作正常。我无法理解为什么会出现这种情况。您可以在此类脚本中包含多少语句/操作?
执行命令oConn.Execute strSql
也不会失败,它只是移动到经典ASP代码的下一行。我有什么方法可以测试错误吗?
答案 0 :(得分:2)
不幸的是,我没有足够的声誉来评论您的问题,但您是否尝试将代码包装在TRANSACTION
块中?如果出现问题,非常有用。
关于错误处理,you can refer to the @@ERROR
...
DECLARE @ErrorVar INT
RAISERROR(N'Message', 16, 1);
IF @@ERROR <> 0
-- This PRINT statement prints 'Error = 0' because
-- @@ERROR is reset in the IF statement above.
PRINT N'Error = ' + CAST(@@ERROR AS NVARCHAR(8));
GO
答案 1 :(得分:2)
保罗让我在正确的轨道上,谢谢你。我已经编写SQL多年了,但承认我在交易世界中只涉及了一点点。在下面的代码之后,我将其他统计信息和失败消息放入一个表中,在调用脚本后我在ASP代码中查询。
BEGIN TRY
BEGIN TRANSACTION
--My long update script placed in here
COMMIT TRANSACTION
END TRY
BEGIN CATCH
IF @@TRANCOUNT > 0
BEGIN
ROLLBACK TRANSACTION
SET @FailMsg = ERROR_MESSAGE() + ' Failed at line ' + CAST(ERROR_LINE() as varchar) + '.'
END
END CATCH