14

如何在 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 的说明(此处),但 VS 2012 或 .NET 4.5 不存在此类页面。

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

VS 2010 应用程序调试

在此处输入图像描述

VS 2012 无应用程序调试

在此处输入图像描述

4

4 回答 4

28

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

于 2012-11-22T13:00:16.773 回答
3

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

  • 带有所有正确选项的 VS 和 SQL 的香草安装(如何做到这一点超出了本文的范围)

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

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

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

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

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

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

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

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

于 2015-12-09T15:12:22.807 回答
1

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

于 2012-08-20T15:16:13.763 回答
0

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

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

于 2012-08-18T06:55:41.853 回答