C# 如何获取SQL CLR程序集中发生的异常的堆栈跟踪
我试图使用SQL CLR程序集,但它会导致一些异常。但是,SQL Server Management Studio仅说明:C# 如何获取SQL CLR程序集中发生的异常的堆栈跟踪,c#,.net,sql-server,sqlclr,clrstoredprocedure,C#,.net,Sql Server,Sqlclr,Clrstoredprocedure,我试图使用SQL CLR程序集,但它会导致一些异常。但是,SQL Server Management Studio仅说明: Msg 10329, Level 16, State 49, Line 7 .Net Framework execution was aborted. The statement has been terminated. 有没有办法获取堆栈跟踪?直接从SSMS调用CLR应返回异常和堆栈跟踪,但如果从存储的进程内部调用,则不会返回错误消息。在这种情况下,您应该使用TRY
Msg 10329, Level 16, State 49, Line 7
.Net Framework execution was aborted.
The statement has been terminated.
有没有办法获取堆栈跟踪?直接从SSMS调用CLR应返回异常和堆栈跟踪,但如果从存储的进程内部调用,则不会返回错误消息。在这种情况下,您应该使用
TRY CATCH
捕获异常
BEGIN TRY
EXEC myproc
END TRY
BEGIN CATCH
-- insert the error message into a log table here
SELECT ERROR_MESSAGE();
END CATCH
您将无法在T-SQL中检索CLR堆栈。您有两条途径可供选择:
尝试。。。在CLR代码中捕获…
块,并使用跟踪堆栈到捕获块的输出。这将在T-SQL环境中将堆栈打印为信息消息,您可以使用@米奇麦-我不允许发布它。但我不认为这有什么关系。我只是问如何获取与SQL CLR程序集中发生的任何异常关联的堆栈跟踪。这是相关的。因为这里的锐利目光很可能在没有堆栈跟踪的情况下发现编码错误…SQL server错误日志应该包含更详细的错误。请使用
try。。。在CLR代码中捕获。@MitchWheat-我相信“教人钓鱼…”:-)