我使用C#和Sql Server 2008,我的CLR存储过程中有一些try / catch块,这些都被捕获了。这些记录在文件中,并使用SqlPipe返回代码错误和消息。这些工作罚款。 现在我需要做同样的事情,因为我有一些未解决的错误,特别是在日志文件中有一个跟踪!
我尝试使用Application.ThreadException,但CLR存储过程(WinForms)中没有此类。我是否必须在我的条目Sql Procedure方法中使用顽皮的try / catch块,还是有更好的事情要做?
感谢。
答案 0 :(得分:1)
我记得,SQL Server会将未处理的异常转储到自己的日志文件中,除了将它们返回给用户。你可能想看一下。
答案 1 :(得分:1)
最干净的方法是在调用的CLR方法中使用try..catch块。更好的方法是将主要功能保存在CLR条目方法调用的单独方法中:
[SqlProcedure]
public static void GetSomething(string value)
{
try {
DoGetSomething(value):
}
catch (Exception ex) {
// error handling
}
}
private static void DoGetSomething(string value)
{
// implementation goes here
}