Visual studio 如何在VisualStudio中有效地调试存储过程

Visual studio 如何在VisualStudio中有效地调试存储过程,visual-studio,sql-server-2005,debugging,Visual Studio,Sql Server 2005,Debugging,我一直在VisualStudio2005中调试SQL2005存储过程,发现在单步执行代码时无法运行sql查询,这让我非常沮丧 具体来说,我的主要问题是 如果SP插入/更新临时表,则调试时无法查询这些表。如果我可以使用即时窗口来运行sql,那就太酷了 如果我的SP在某个事务下运行,则在调试时无法再次查询它影响的任何表。即使我切换到SQLManagementStudio并对未提交的数据运行查询 我能在调试器中检查的唯一一件事是SP中使用的局部变量,这并没有多大帮助 有人知道更好的调试方法吗?这在

我一直在VisualStudio2005中调试SQL2005存储过程,发现在单步执行代码时无法运行sql查询,这让我非常沮丧

具体来说,我的主要问题是

  • 如果SP插入/更新临时表,则调试时无法查询这些表。如果我可以使用即时窗口来运行sql,那就太酷了

  • 如果我的SP在某个事务下运行,则在调试时无法再次查询它影响的任何表。即使我切换到SQLManagementStudio并对未提交的数据运行查询

我能在调试器中检查的唯一一件事是SP中使用的局部变量,这并没有多大帮助


有人知道更好的调试方法吗?这在VS.net 2008或2010中更好吗?

添加大量诊断选择和打印语句

嘿,这是我们所有程序员在调试器出现之前必须做的事情。一旦你习惯了就没那么糟糕了

此外,这也是保持程序小型化的另一个非常好的理由

我使用过SQL(其他版本)的真实调试器,事实上,编写良好的SQL从传统调试器中获益甚微。声明性的、基于集合的代码并不适合这种模型。现在编写糟糕的SQL(过程式、命令式等)确实如此,但设计过程越好,使用调试器的理由就越少


IMHO,如果您需要调试器可以为您做的事情,那么更好的解决方案是使用SQL Profiler,它的优点是能够告诉您过程在生产中实际在做什么,而不仅仅是它在人工测试中在做什么。

是一篇关于如何使用Visual Studio 2005进行此操作的文章。我自己也没有试过,但Rolla的4GuysFromRolla在过去为我提供了很好的信息。

最好仔细检查一下


我是从这里得到这个主意的。希望这对你也有帮助。这与VS 2008重新标记为sql 2005的方式相同,但我认为它可能也适用于2008。不,sql Server 2008再次具有调试器。我在链接文章中找到的调试Server 2000的链接为+1。个人WTF?!那个一刻,我发现了这一点,因为我已经想要它好几次了,但从来并没有发现过。我以前读过那个篇文章。它只讨论如何“启动”调试。没有太多关于你必须用什么工具来分析数据,一旦你通过它。它唯一提到的是。。。“进入调试器后,我们可以单步执行存储过程的语句,并通过监视窗口查看和编辑参数值和变量”我希望能够进行查询,而不仅仅是查看变量。您已经将事务隔离级别设置为READ UNCOMMITTED?有一些商业产品声称为T-SQL调试提供了更多工具,但我从未尝试过其中任何一种。如果VS调试和带有事务隔离级别设置的SQLServerManagementStudio会话不允许您做您想做的事情,我认为您只能接受RBY的答案——大量的诊断语句。我使用带有隔离级别欺骗的SSMS会话和Powerbuilder会话来调试我们应用程序的db访问和数据操作,无需任何麻烦。完成后别忘了重置隔离级别。是的,我在运行查询之前运行了SET TRANSACTION isolation level READ UNCOMMITTED,但它不起作用。现在是2009年。我们注定很快就会有飞行的汽车,但仍然无法成功地把像样的sql调试器启动。一个真正的专业人士不会责怪他们的工具。他们学习如何利用现有资源。