3

我知道这里还有其他关于同一问题的问题,但我对任何问题的建议都没有帮助。

我正在尝试调试存储过程,以从 VB.Net 应用程序中单步执行其代码。

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

我为 .Net 项目启用了 SQL 调试。我在服务器资源管理器中为与我的数据库的数据连接启用了“启用 SQL/CLR 调试”。我的调试器附加到托管 (4.0)、本机和 T-SQL 进程(通过调试菜单中的附加到进程对话框确认)。

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

帮助,请 - 任何人!我在这上面浪费了 2 天!

4

1 回答 1

0

我知道这是一个老问题,但我想我会提供以下全面的解决方案,它可以让您调试存储过程,并且可能对其他提出这个问题的人有价值。希望你能找到有价值的步骤!

建议步骤:

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

您现在应该希望能够根据需要调试您的存储过程!

于 2017-02-02T01:04:12.847 回答