SSMS 2008的一个伟大的新特性是新的调试工具。查询分析器在SQL Server 2000中有一个存储过程调试工具,但当SQL Server 2005合并企业管理器和查询分析器时,它没有被转移。这是一个从裂缝中消失的特征。我们必须切换到Visual Studio并在那里调试存储过程。但是微软已经在SSMS 2008中纠正了这个缺失的特性,所以我们不必为了调试Transact-SQL代码而切换到Visual Studio。
测试新调试特性的一种简单方法是测试像sp_helpdb这样的系统存储过程。在新查询窗口中,输入语句:
EXEC sp_helpdb
然后通过单击调试/启动调试或绿色箭头按钮输入调试工具。Debug会话开始并在语句执行之前立即停止,显示黄色箭头指示符。此时,您可以通过单击Debug/ step Into或F11来逐步执行存储过程的代码。然后再次显示黄色箭头,这次是针对存储过程中的第一条语句。调试工具正在等待进一步的指令。本地变量可以在Locals选项卡下查看,通过右键单击变量并选择“Add Watch”,可以设置监视列表。为了逐行执行代码,可以反复使用F11键。Watch列表将显示所选变量及其当前值。如果您希望测试没有测试数据的特定场景,您可以通过右键单击并选择“编辑值”来更改这些值。
当然,您可以设置断点,这样您就不必使用Debug/Toggle Breakpoint或F9在每一行代码处停止。在这种情况下,单击Debug/Continue或Alt+F5将推进到下一个断点。如果没有更多的断点,则代码将完成,调试会话将停止,并显示代码的结果。
用这种方法调试代码非常有教育意义,尤其是当代码不是您的时候。例如,在这个特定的存储过程sp_helpdb中,您会遇到一条动态sql,前面有一个注释。它说“8 KB的页面是128 / MB。如果我们改变了页面大小,这将以某种方式被DB或文件或文件组改变;现在是不可预见的,所以硬编码吧。”代码使用数据页的数量计算数据库大小(db_size)。页面大小目前固定在8KB,但看看微软正在考虑什么是有趣的。Oracle显然支持可变页面大小,但SQL Server一直是固定的。
由于微软让我们看到了系统存储过程的代码,现在我们可以交互地逐步处理这些代码,我建议“去学习”微软开发人员的代码。您可以了解很多有关Transact-SQL的知识,而且大多数代码结构良好,效率很高。
不要忘记阅读评论!
干杯
布莱恩
最近的帖子: