【问题标题】:Getting Line Numbers for Errors Thrown in SQL Server CLR Runtime获取 SQL Server CLR 运行时中引发的错误的行号
【发布时间】:2010-09-26 07:24:07
【问题描述】:

我创建了一个在 SQL 2k5 上运行的 CLR 存储过程,我想知道是否有任何方法可以获取 .NET 代码引发的异常的行号。当抛出异常时,我会得到类似

的内容

消息 6522,级别 16,状态 1,过程 myProcedure,第 0 行 在执行用户定义的例程或聚合“myProcedure”期间发生 .NET Framework 错误: System.Exception:测试异常 系统异常: 在 DummyDLL.myProcedure(字符串 dummyInput) .

有没有什么方法可以加载程序集来给我特定的行号,而不仅仅是引发错误的函数?程序集本身是使用 .pdb 编译的,但是当我最初加载程序集时,SQL 2k5 似乎没有读取它。

谢谢!

【问题讨论】:

    标签: .net sql-server error-handling clr


    【解决方案1】:

    我不确定注册 PDB 是否也会为您提供行号(理论上应该如此)。

    您确定您的 PDB 注册正确吗?下面告诉你如何做到这一点:

    http://blogs.msdn.com/ericnel/archive/2005/03/18/398534.aspx

    基本上,语法是:

    CREATE ASSEMBLY Asm1 FROM 'MyAssembly.dll'
    GO
    ALTER ASSEMBLY Asm1 ADD FILE FROM 'MyAssembly.pdb'
    GO
    

    【讨论】:

    • 虽然这使我可以使用调试器实际介入 CLR 存储过程,但不幸的是,我仍然没有在异常中获得行号。但仍然 +1 提示,因为现在至少我可以使用调试器了。
    猜你喜欢
    • 1970-01-01
    • 2012-07-27
    • 1970-01-01
    • 1970-01-01
    • 2023-03-04
    • 2014-09-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多