我正在尝试使用 SQL CLR 程序集,但它导致了一些异常。然而,SQL Server Management Studio 只说:
Msg 10329, Level 16, State 49, Line 7
.Net Framework execution was aborted.
The statement has been terminated.
有什么方法可以获取堆栈跟踪吗?
最佳答案
您将无法在 T-SQL 中检索 CLR 堆栈。您可以使用两种途径:
修改 CLR 代码,在 CLR 代码中添加
try ... catch ...
block 并跟踪堆栈到 catch block 的输出, 使用SqlPipe.Send
.这将在您的 T-SQL 环境中将堆栈打印为信息消息,您可以使用SqlConnection.InfoMessage
在客户端中捕获它。将调试器附加到 SQL Server 并捕获第一次机会 CLR 异常(即引发异常时)。这将允许您解决问题并修复它,但显然不是生产解决方案。 SQL Server 在调试器下停止时将卡住,因此请确保您在受控环境中执行此操作。
关于c# - 如何获取 SQL CLR 程序集中发生的异常的堆栈跟踪,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12153185/