c# - 如何获取 SQL CLR 程序集中发生的异常的堆栈跟踪

标签 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.

有什么方法可以获取堆栈跟踪吗?

最佳答案

您将无法在 T-SQL 中检索 CLR 堆栈。您可以使用两种途径:

  1. 修改 CLR 代码,在 CLR 代码中添加 try ... catch ... block 并跟踪堆栈到 catch block 的输出, 使用 SqlPipe.Send .这将在您的 T-SQL 环境中将堆栈打印为信息消息,您可以使用 SqlConnection.InfoMessage 在客户端中捕获它。

  2. 将调试器附加到 SQL Server 并捕获第一次机会 CLR 异常(即引发异常时)。这将允许您解决问题并修复它,但显然不是生产解决方案。 SQL Server 在调试器下停止时将卡住,因此请确保您在受控环境中执行此操作。

关于c# - 如何获取 SQL CLR 程序集中发生的异常的堆栈跟踪,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12153185/

相关文章:

c# - EnsureCreated 方法无法在数据库中创建新表

mysql - 从 SQL 中的表中选择不同的日期间隔

sql-server - 如何将 SQL BACKUP 命令的结果输出获取到 Delphi 程序中?

c# - 如何将自定义菜单项添加到现有应用程序?

c# - 如何访问匿名类型?

c# - 如何在 nunit 中测试泛型集合?

c# - sql命令不适用于c#中的select语句

c# - 在 .NET 中迭代匿名类型的集合

.net - 如何在两台负载平衡的机器上强制自动生成的 WSDL 匹配?

sql - 避免在 UPDATE 语句中多次调用标量函数