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

时间:2008-09-23 18:16:00

标签: error-handling clr try-catch

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

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

1 个答案:

答案 0 :(得分:2)

这是一篇博客文章,涵盖了高层: Exception handling in SQLCLR

  

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

这似乎意味着它会起作用。