从VS2010和SQL Server 2008调试SQL应用程序 - 无法在存储过程中命中断点

时间:2012-11-16 01:49:18

标签: sql-server debugging

我知道此问题还有其他问题,但我对任何问题的建议都没有帮助。

我正在尝试调试存储过程,从VB.Net应用程序进入其代码。

我可以使用VS 2010中的服务器资源管理器进入存储过程。但是,我不能从我的.Net应用程序中的代码进入存储过程。我的.net代码,读取“ExecuteNonQuery()”的行和我的存储过程中的断点都有断点。当我在调试模式下运行应用程序时,我在存储过程中的断点读取“此断点当前不会被命中。此文档没有加载任何符号。”当我的断点被.Net代码命中时,执行从ExecuteNonQuery行直接到.Net代码的下一行 - 没有在存储过程中点击我的断点。

我为.Net项目启用了SQL调试。我为Server explorer中的数据库数据连接启用了“启用SQL / CLR调试”。我的调试器附加到Managed(4.0),Native和T-SQL进程(通过调试菜单中的Attach to Process对话框确认)。

sql server实例和VS实例都在我的本地计算机上,我是它的管理员。我从Cassini运行应用程序,它在我自己的帐户下运行。我正在运行VS2010 V 10.0.40219.1 sp1 Rel和安装在64位Win2k8计算机上的SP 2的SQL Server 2008。

请帮助 - 任何人!我浪费了2天这个!

1 个答案:

答案 0 :(得分:0)

我知道这是一个古老的问题,但我认为我提供了以下工作循环解决方案,可以让您调试存储过程,并且对于提出此问题的其他人可能有价值。希望您能找到有价值的步骤!

建议步骤:

  1. 运行SQL Server Profiler (例如,从 SQL Server Management Studio(SSMS)中 - 选择菜单项工具 - > SQL Server Profiler )。
  2. 使用SQL Server Profiler 连接到本地SQL Server实例。
  3. 点击跟踪属性窗口中的运行按钮。
  4. 注意:您应该注意,SQL Server Profiler现在将监视本地SQL Server实例上的活动(例如Stored Proc执行等)。
  5. 如前所述,在 ExecuteNonQuery()语句中设置断点
  6. 运行您的.Net代码,它应达到上述断点。
  7. 在执行断点ExecuteNonQuery()语句之前,请返回 SQL Server Profiler 清除跟踪(使用 CTRL + Shift + Del 或单击清除跟踪窗口按钮。
  8. 现在在VS 执行/步骤 ExecuteNonQuery()语句中。
  9. SQL Server Profiler 中注意,现在已捕获存储过程的跟踪(以及任何参数)。
  10. SQL Server Profiler 中,只需复制跟踪结果(即带有参数的存储过程)。
  11. SSMS 中打开新的查询窗口
  12. 确保连接 本地实例数据库通过 Alt + F5 启动调试或从菜单中调试 - >开始调试
  13. 您现在应该可以根据需要调试存储过程!