如何在SQL Server 2005中使用多个嵌套子查询调试复杂查询?
我正在调试Visual Studio 2005中的存储过程和触发器。我希望能够看到这些子查询的结果是什么,因为我觉得这是bug的来源。下面是一个示例查询(略微编辑):
UPDATE
foo
SET
DateUpdated = ( SELECT TOP 1 inserted.DateUpdated FROM inserted )
...
FROM
tblEP ep
JOIN tblED ed ON ep.EnrollmentID = ed.EnrollmentID
WHERE
ProgramPhaseID = ( SELECT ...)
Visual Studio似乎没有为我提供查看子查询结果的方法。另外,如果我使用临时表来存储结果(临时表也在别处使用),我无法查看存储在该表中的值。
无论如何我可以添加手表或以其他方式查看这些子查询吗?如果有某种方式“逐步进入”查询本身,我会喜欢它,但我想这是不可能的。
答案 0 :(得分:1)
好的,首先我会在触发器中使用子查询。触发器应尽可能快,因此请删除可能逐行而不是基于集合的方式运行的任何相关子查询。重写加入。如果您只想根据插入表中的内容更新记录,请加入它。也加入您正在更新的表。你想用这个触发器完成什么?如果我们了解您要实施的业务规则,则可能更容易提供建议。
要调试触发器,这就是我的工作。
我写了一个脚本:
答案 1 :(得分:0)
这是我在这种类型的场景中通常做的事情: 打印出每个子查询生成的确切sqls 然后按照上面的建议在Management Studio中运行每个。 您应该检查不同的部件是否为您提供了您期望的正确数据。