【问题标题】:Error handling of stored procedure having known errors being called from vb.net从 vb.net 调用具有已知错误的存储过程的错误处理
【发布时间】:2010-11-17 19:20:34
【问题描述】:

我有 sql server2000 加密存储过程。我无法修改它们。通常,所有程序都使用游标等逐行操作不同的表。

在查询分析器屏幕上执行存储过程时,我看到中间出现错误,但过程会继续执行,直到所有记录都已处理完毕。客户可以接受这种行为。

我现在需要使用 VB.net 2002 windows 应用程序自动执行该过程。我从 vb.net 调用该过程,但程序在存储过程中第一次出现错误时抛出运行时错误。

谁能指导我如何处理和编程错误处理,以便继续处理直到处理完所有记录。非常感谢您的帮助。

【问题讨论】:

    标签: sql-server vb.net error-handling .net-1.0


    【解决方案1】:

    我不确定如何在 .Net 1.0 中执行此操作。

    在 2.0 及更高版本中,我会将连接的 FireInfoMessageEventOnUserErrors 属性设置为 True 并处理 `InfoMessage 事件。但是对 MSDN 的快速检查显示它们分别在 .Net 2.01.1 之前不可用。

    【讨论】:

      【解决方案2】:

      由于存储过程是加密的,你不能修改它。一种选择是创建另一个存储过程来充当加密过程的包装器。

      示例...伪 TSQL

      CREATE PROCEDURE MyWrapperProc
      (
         @MyParameters somedatatypes
      )
      EXEC MyEncrytedStoreProc @MyParameters
      

      然后使用 Wrapper proc 更改您的 VB.NET 调用。 SQL 2000 中没有 TRY-CATCH。我认为这应该允许 Encrypted proc 运行而不会出现错误冒泡到您的 VB.NET 代码,除非您明确提出错误。

      【讨论】:

      • 错误仍然会冒泡,它直接进入客户端连接,无论嵌套级别如何。只有 2k5 try/catch 可以改变这一点。
      猜你喜欢
      • 2011-02-11
      • 1970-01-01
      • 2022-01-04
      • 1970-01-01
      • 2011-12-07
      • 1970-01-01
      • 1970-01-01
      • 2015-01-02
      • 2013-05-17
      相关资源
      最近更新 更多