【问题标题】:How to debug SQL Server T-SQL in Visual Studio 2012如何在 Visual Studio 2012 中调试 SQL Server T-SQL
【发布时间】:2012-08-14 12:42:15
【问题描述】:

如何在 Visual Studio 2012 的多层应用程序中调试 T-SQL 存储过程?

明确地说,我想在 VS 2012 的存储过程中设置断点,并在同一调试会话中从 ASP.NET WebForms 应用程序调用存储过程时点击它。

执行与 VS 2010 相同的步骤时,断点不会在 sproc 内命中。

在 SQL Server 2008 R2 Express 数据库的存储过程中调试 T-SQL 在 Visual Studio 2010 中按预期工作。

为确保一切都已正确启用,我查看了 VS 2010 (here) 的说明,但 VS 2012 或 .NET 4.5 不存在此类页面。

似乎缺少的步骤是启用“应用程序调试”,但在 VS 2012 的服务器资源管理器 > 数据连接上下文菜单中不存在这样的选项。

VS 2010 应用程序调试

VS 2012 无应用程序调试

【问题讨论】:

  • 存储过程是您解决方案的一部分,还是仅在数据库端?
  • @aclear16 - sproc 文件(CREATE PROCEDURE 脚本)不是解决方案的一部分。 sproc 已添加到数据库中。将服务器连接添加到服务器资源管理器中的数据连接后,我将树展开到存储过程,右键单击并选择打开选项以按照说明打开存储过程。我在 VS 中打开的 ALTER 脚本中设置了断点。同样,此过程在 VS2010 中使用相同的解决方案都可以成功运行,但无法在 VS2012 中启用“应用程序调试”。

标签: sql-server tsql debugging visual-studio-2012 visual-studio-debugging


【解决方案1】:

以下详细文章准确解释了如何在执行 .Net 应用程序时启用存储过程的调试。

http://www.sqlmag.com/content1/topic/debugging-stored-procedures-142054/catpath/sql-server

【讨论】:

  • 谢谢,但那篇文章涵盖了 VS2010,正如我所说,它工作得很好。我需要一些 VS2012 的东西。除了缺少“应用程序调试”选项外,我在 VS2010 和 VS2012 中都对同一个项目执行了相同的配置步骤。调试在 VS2010 中有效,但在 VS2012 中无效。
【解决方案2】:

我相信最简单的方法是将数据库作为一个项目添加到您的解决方案中。您可以通过右键单击 SQL Server 对象资源管理器 (SSOX) 中的数据库来执行此操作。这是开发和调试数据库的好方法。将数据库添加到项目后,您可以在任意位置添加断点,并针对 LocalDB(或其他目标,如果您愿意)进行调试。这种方法的最大缺点是您现有的数据不会随您一起迁移(尽管您可以轻松地将任何更改发布回 SQL DB)。如需进一步指导,请参阅 MSDN 上 SSDT 上的 documentation

【讨论】:

    【解决方案3】:

    您需要打开“SQL Server 对象资源管理器。不是“服务器资源管理器”。这是 2010 和 2012 之间的不同之处。然后右键单击服务器并选择“应用程序调试”。

    【讨论】:

      【解决方案4】:

      这适用于 VS2012 和 SQL2012。是的,其他版本的情况有些不同,但有点遵循类似的设置。这很棘手,因为必须正确设置各种设置,否则将无法正常工作。

      • 使用所有正确选项安装 VS 和 SQL(如何执行此操作超出了本文的范围)

      • 对整个环境的完全管理员权限和对 sql 的系统管理员权限(基本上是开发环境;您不希望在生产环境中这样做)

      • 我总是在完整的本地 IIS 下调试 .net Web 应用程序,这是从控制面板安装的 Windows 功能

        • 转到 .net 项目属性,web,使用本地 iis 网络服务器(我也坚持使用默认端口 80)
      • 当我使用 VS sql server 数据库项目开发我的数据库等时,我总是在完全独立的本地 SQL 下工作;我使用模式比较来刷新在 VS 中所做的更改的 sql(如何做到这一点超出了本文的范围)

        • 不要在该 sp 副本上放置断点;该版本的 sp 只是一个蓝图,而不是运行时版本
      • 为 .net 和 sql server 启用了 go .net 项目属性、Web、调试器(底部)

      • 查看 sql server 对象资源管理器(不是服务器资源管理器)

        • 单击添加 sql server,使用 sysadmin 凭据添加完整的本地 sql server(我总是使用 sa 来完成此类工作)
        • 右键单击您的完整本地 sql server 并启用应用程序调试
        • 在那里找到sp并右键单击并查看代码,然后在那里添加你的断点;这是 sp 的运行时版本(请注意,我从不在那里对 sp 进行更改,我会在数据库项目下的主副本中进行这些操作)
      • 重建解决方案,并通过单击绿色箭头 Internet Explorer 从 ide 中以调试模式执行 .net Web 应用程序

      我希望我没有忘记任何事情。如果有我会来修改我的帖子。

      这一切听起来可能很复杂。它是。但只要有一点纪律和耐心,它是无价的。 祝你好运。

      【讨论】:

        猜你喜欢
        • 2021-01-19
        • 2019-08-19
        • 1970-01-01
        • 2013-07-03
        • 2012-08-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多