我正在单步执行SQL Server Management Studio 2008(SSMS)中的存储过程。代码创建了一些表变量以及我想要检查的临时#表。现在我可以在“Locals”窗口中看到其他局部变量,而在那里列出表变量时,我看不到它们的内容。我还想检查#temp表,但是我想要针对它们运行的任何select语句都需要来自我正在逐步执行的代码。
这是否可以在SSMS 2008调试器中使用?
答案 0 :(得分:12)
我构建了a procedure,它将显示来自另一个数据库连接的临时表的内容。 (普通查询无法实现)。 请注意,它使用DBCC PAGE&用于访问数据的默认跟踪,因此仅用于调试目的。
答案 1 :(得分:1)
这与此问题基本相同:How to see the values of a table variable at debug time?
似乎简短的回答是:不!这在SSMS 2008中尚未实施。
在Microsoft Connect上查看此帖子:SQL Debugging - All About Tables: Table Variables, #Temp, ##Global Temp, Source (Input) and Output Tables
答案 2 :(得分:1)
我在复杂的proc中所做的是在我调用@test的任何变量的末尾添加一个默认值为0的输入变量。 (通过这样做,我不会破坏对proc的任何现有调用)
然后在我可能想要查看表变量或临时表的值的每一点我都放了一个if语句,我甚至可能添加一列,所以我知道我在什么时候看表:
IF @test = 1 开始 选择'在更新字段3'之后'作为TestStep,* FROM #temp END
现在他们只有在测试模式下运行时才会运行,我可以在两年后调试问题时看到我需要的任何内容。我还打印了我在测试模式下创建的任何动态SQl语句。