是否可以在 SSMS 中单步执行使用变量的 TSQL?

you*_*gme 3 sql-server ssms t-sql transaction

如果我在 SSMS 查询编辑器中输入 TSQL,我知道我可以通过突出显示一条语句并按键盘上的 F5 来“单步执行”这些语句(即一次执行一个语句)。

但默认情况下,该会话似乎没有打开的事务。每次执行都已提交。

我可以编写 TSQL,使其以or开头BEGIN TRAN和结尾- 这确保了当我逐步执行时,我可以选择退出更改。COMMITROLLBACK

然而,我遇到的问题是当我声明变量时。考虑:

declare @flag bit = 0;

select case when @flag = 0 then 'off' when @flag = 1 then 'on' end as FlagCheck;
Run Code Online (Sandbox Code Playgroud)

无论上面的内容是否包含在事务中,如果我单独运行第一个语句,然后单独运行下一个语句,则第二个语句将失败,因为尚未声明变量。

是否可以单步执行这样的代码,并让 SSMS 了解先前语句(声明变量并赋值)的效果应该延续到下一步?(同样,即使包装在事务中,这种变量的持久性也会失败 - 即使数据更新的持久性取决于事务解析 - 提交或回滚)。

Mar*_*ith 5

每次您从 SSMS 提交文本时,批处理都会在完成执行后结束,并且任何变量都将超出范围。

执行此操作的唯一方法是使用调试器,如下所示。然后您可以使用 F10 或 F11 键逐行浏览。这应该只在开发环境中使用。

另外(正如 @clifton_h 所指出的)此功能已从 SSMS 18.x 中删除,但在最新的 GA 版本(当前为 17.9.1)中仍然可用

在此输入图像描述