【问题标题】:Cannot execute breakpoint inside stored procedure from VS 2017无法在 VS 2017 的存储过程中执行断点
【发布时间】:2018-08-03 13:08:29
【问题描述】:

我确定我遗漏了一些非常明显的东西,但它正在逃避我。

我正在尝试在开发机器上调试 SQL Server 2012 数据库中的存储过程。我在本地机器上使用 VS 2017 Professional。通过输入参数值,我可以通过 SQL Server 对象资源管理器设置断点并调试存储过程。

但是:我想使用 IISExpress 从我在 VS 2017 中运行的 Web 应用程序调试存储过程。我是这样设置的:

  • 我对 Server Explorer 连接和 Web 应用程序使用相同的连接字符串。

  • 用户在 SQL Server 中具有管理员权限

  • 在 Web 应用程序的属性页中,我检查了“ASP.NET”和“SQL Server”的调试器

  • 我已将配置管理器设置为在任何 CPU 上进行调试。

  • 当我运行应用程序时,我在调用存储过程之前和之后设置了一个断点。

当我运行应用程序时,它会在调用存储过程之前的断点处中断,但会直接跳到下一个应用程序断点。存储过程中的断点是一个带有消息的空心圆圈 '断点当前不会被命中。此时无法绑定 sql 断点。包含未加载断点的对象。'

我知道我可以简单地中断 Web 应用程序,获取存储过程的参数值并从 SQL Server 对象资源管理器中运行它来单步执行代码,但我不应该这样做。

任何帮助将不胜感激。

【问题讨论】:

  • 您是否在调用存储过程的数据连接上启用了允许 SQL/CLR 调试?请查看此线程中的更多详细步骤:stackoverflow.com/questions/32885855/…。此外,如果您是从远程机器调试。您应该登录到服务器计算机并在本地进行调试。顺便说一句,有一篇关于如何在 Visual Studio .NET 中调试存储过程的文档:support.microsoft.com/en-gb/help/316549/…
  • 谢谢。我在数据连接上启用了允许 SQL/CLR 调试。我正在运行在本地调用存储过程的应用程序,但 SQL Server 实例所在的服务器对我不可用,因此我无法对其进行调试。如果我直接从 Sql Server 对象视图而不是从也调用它的托管代码执行它,我可以调试存储过程,这似乎很奇怪?
  • @Jerry Mollis,请您与我们分享您身边的最新信息吗?如果您提交此反馈,请在此处与我们分享您的答案中的链接,以便我们帮助您投票。

标签: sql sql-server debugging visual-studio-2017 breakpoints


【解决方案1】:

我用一个简单的示例对其进行了测试,我可以在 VS2015 中达到断点,但在 VS2017 中不起作用,所以这将是一个反馈。

如果可能,我建议您直接向开发者社区网站发布反馈:

https://developercommunity.visualstudio.com/spaces/8/index.html

【讨论】:

    【解决方案2】:

    让这个对我有用的重要步骤是:

    • 不要使用 Resharper 的测试运行器运行 C# 代码(在我的例子中是集成测试),使用标准的 Visual Studio 测试运行器。

    这为我解决了这个问题。 Resharper 测试运行器由于某种原因没有触发 T-SQL 调试。

    由于听起来您的问题与集成测试无关,因此这可能对您有帮助,也可能对您没有帮助,如果有用,请发布。

    (将 VS2019 与 Resharper 2020.2.4 一起使用)。

    【讨论】:

      猜你喜欢
      • 2016-03-06
      • 2016-10-11
      • 2018-06-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-30
      • 2017-01-29
      相关资源
      最近更新 更多