3

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

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

4

1 回答 1

2

这是一篇高层次的博客文章: SQLCLR 中的异常处理

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

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

于 2008-09-23T18:44:48.330 回答