什么是批次?

car*_*thl 15 sql t-sql

在Transact-SQL中,批处理是一组一起提交并作为一个组一个接一个地执行的SQL语句.批处理可以存储在命令文件中.

包含多个SQL语句的*.sql文件是否被视为批处理?还有什么我们认为批次?

Joe*_*orn 10

包含多个sql语句的*.sql文件是否被视为批处理?

有点.*.sql文件实际上可以包含多个批次.您可以通过批处理分隔符分隔批次.您可能需要在文件中使用多个批次,因为某些语句(特别是某些"ALTER"命令)每批只能执行一次.这可能会使得在循环中执行ALTER变得棘手.

这里的另一个技巧是如何分离文件/文档中的各个批次.在99%的Sql Server工具中,批处理分隔符为" GO".但是,这可以通过该工具进行配置.它不是SQL语言本身的一部分,因此您可以偶尔遇到奇怪的人,然后使用其他东西,或者如果您直接向其发送"GO"命令,则会对SQL Server抱怨感到困惑.

  • 1)我不确定我理解为什么批次是好事(我发现某些语句每批只能执行一次,但如果批次不存在,那么我们就不会有这个问题),这就是为什么Sql服务器开发团队是否认为引入批次是个好主意?!2)除了某些语句每批只能执行一次这一事实之外,还有其他原因我们会将一堆语句放入几个不同的批次而不是将它们全部放入一个批处理中吗? (3认同)
  • 某些其他语句(SET选项)将适用于批处理结束. (2认同)

Pau*_*ter 5

批处理不是TSQL的一部分,它们是SQL Management Studio编辑器的功能.因此,例如,您无法提交带有"GO"的ADO.NET命令对象作为命令文本的一部分.

批处理标记 - "GO"告诉查询编辑器在执行期间继续之前将SQL提交到该点.

可以将查询编辑器配置为在"GO"旁边使用不同的批处理标记,但这只会让人感到困惑.

  • 它们是 TSQL 的一部分。您也可以在 ADO.NET 中发送包含多个命令的批处理。 (2认同)
  • 我相信你错了。以下是有关 GO 命令的 MSDN TSQL 参考页:http://msdn.microsoft.com/en-us/library/ms188037.aspx (2认同)
  • 再想一想,我明白你的意思了。原题中的批处理定义是正确的,批处理会影响TSQL语句的执行。 (2认同)

HLG*_*GEM 5

来自在线书籍

CREATE DEFAULT、CREATE FUNCTION、CREATE PROCEDURE、CREATE RULE、CREATE SCHEMA、CREATE TRIGGER 和 CREATE VIEW 语句不能与批处理中的其他语句组合。CREATE 语句必须启动批处理。该批处理中后续的所有其他语句都将被解释为第一个 CREATE 语句定义的一部分。

不能更改表,然后在同一批中引用新列。

由此您可能会推断,在尝试使用数据库结构更改之前,需要多个批次才能确保它们生效。