在SSMS中,用GO分隔的命令是否保证是同步的?

时间:2014-05-29 10:44:23

标签: sql-server ssms

如果我执行以下脚本:

EXECUTE LongRunningSP1
GO

EXECUTE LongRunningSP2
GO

假设两个过程都需要几分钟,那么GO批处理是否会导致任何并发发生,或者LongRunningSP1是否会在LongRunningSP2启动之前完成?

4 个答案:

答案 0 :(得分:3)

GO只会批量分割您的代码,但它不会导致任何并发:所有批次按照它们在代码中出现的顺序执行一次。

答案 1 :(得分:2)

LongRunningSP1保证在LongRunningSP2之前完成,有或没有GO; GO是命令处理器的批处理分隔符。

使用命令行实用程序SQLCMD时,更容易看到它的作用。

SQLCMD
1> exec LongRunningSP1
-- nothing happens
2> exec LongRunningSP2
-- nothing happens
3> GO
-- both procs are run, first SP1, then SP2

答案 2 :(得分:0)

是!! Go实际上会将其分批处理。 所以它的LongRunningSP1首先完成,总是!

答案 3 :(得分:0)

GO不是Transact-SQL语句;它是sqlcmd和osql实用程序以及SQL Server Management Studio代码编辑器可识别的命令。它是一个批处理终止符,它不会更改查询的顺序。但是,您可以根据选项将其更改为您想要的任何内容。

以下是在SSMS中自定义批处理分隔符的一组非常简单的简单步骤:

  1. 启动SSMS
  2. 转到工具 - >选项
  3. 单击“查询执行”节点
  4. 请注意,我们可以选择更改批处理分隔符
  5. 更改批处理分隔符
  6. 点击“确定”