SQL Try-Catch块可以处理抛出的CLR错误吗?

时间:2020-03-06 14:36:57  来源:igfitidea点击:

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

如果我可以从CLR内部扔到SQL中的调用过程,是否需要任何特殊的格式?我尝试了一种特定的情况,即捕获所引发的错误,然后引发另一个错误,但是SQL忽略了我所引发的错误并捕获了原始错误,就像它忽略了所引发的错误一样。

解决方案

这是一篇博客文章,涵盖了较高的层次:
SQLCLR中的异常处理

When SQL server execute a user function/procedure/trigger implemented in CLR (i.e., managed code), we will install a managed exception handler around the user code. So if the user code leaked a exception, the server will catch it and throw a TSQL exception wrapping the user exception.

这似乎暗示它将正常工作。