【问题标题】:Can SQL Try-Catch blocks handle thrown CLR errors?SQL Try-Catch 块可以处理抛出的 CLR 错误吗?
【发布时间】:2010-09-12 11:19:37
【问题描述】:

我们正在使用 SQL 2005 和 try-catch 功能来处理数据库中的所有错误处理。我们目前正在部署一个 .NET CLR 函数以在数据库中进行一些 WCF 调用。此 WCF 过程在 CLR 中编写,然后部署到 SQL。如果我在 CLR 代码中放置一个 try-catch 块,它会很好地捕获错误。但是,我似乎无法将错误抛出到 SQL 中的 try-catch 块。 SQL 似乎忽略了我抛出的内容并捕获了它发现的错误。两者之间有没有关系(即我不能从一个扔到另一个?)

如果我可以从 CLR 中抛出到 SQL 中的调用过程,是否需要任何特殊格式?我尝试了捕获抛出的错误的特定情况,然后抛出不同的错误,但是 SQL 忽略了我抛出的错误并捕获了原始错误,就好像它忽略了抛出的错误一样。

【问题讨论】:

    标签: error-handling clr try-catch


    【解决方案1】:

    这是一篇高水平的博文: Exception handling in SQLCLR

    当 SQL Server 执行在 CLR 中实现的用户函数/过程/触发器(即托管代码)时,我们将在用户代码周围安装一个托管异常处理程序。所以如果用户代码泄露了一个异常,服务器会捕获它并抛出一个包装用户异常的TSQL异常。

    这似乎暗示它会起作用。

    【讨论】:

      猜你喜欢
      • 2022-12-20
      • 1970-01-01
      • 1970-01-01
      • 2021-08-27
      • 1970-01-01
      • 2023-04-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多