在 SQL 服务器中调试远程聚合

Debugging a Remotely-located Aggregate in SQL Server

所以我遇到了一个大问题。我需要调试一个自定义聚合,我能够构建和部署它,但一旦开始,它将不允许以下操作:

  1. 在任何情况下都具有管理员访问权限。
  2. File.Write 访问权限(不能写入文本文件)
  3. EventLog访问。
  4. Remote Debugging 由于复杂的防火墙、用户权限等原因访问。
  5. 通过 SQL Server 的本地安装获取数据。我将数据存储在一个远程位置,但无法将其转储以进行测试。

在这种情况下我将如何调试自定义聚合?当尝试使用 File.WriteEventLog.WriteEvent 时,它会引发安全访问异常。

有没有办法打印每次聚合函数调用期间发生的输出?我想知道什么正在被注入和倾倒到 Merge()Terminate() 等,因为它正在发生。

有什么我想念的吗?谢谢。

鉴于这些困难的访问限制,我们能够想出一个解决方案。它并不完美,但它为我们提供了所需的输出。

我们的解决方案是创建一个 StringBuilder 实例。

StringBuilder sb = new StringBuidlder();

并在需要调试的地方添加内容:

sb.Append("|Debug information");

最后,我们将 StringBuilder 附加到收集结果中。而不是返回 "test," 我们会返回这样的东西:

"test|debug information|more debug information|more debug information." 

然后我们会复制该信息,并将其用于调试。它并不完美,但我们能够通过拆分结果来分离结果,并完成工作。