SQL Server:语句 vs. 批处理 vs. 事务 vs. 连接

10 sql sql-server

我的问题很简单:它们之间的差异/相似之处/基数是什么?

  • 交易
  • 批次
  • 连接和
  • 声明

在 SQL Server 中?

据我所知,连接是 SQL Server 实例和客户端之间的单个通信通道,在其中执行分组为批处理的语句集合。一个批次或隐式或显式映射到一个或多个事务。这样对吗?


Cro*_*ent 6

差不多了。

批处理就是需要执行的一批命令。事务是一组保证成功或完全失败的命令(即,它不会完成一半命令,然后在其余命令上失败,如果一个失败,则全部失败)。

据我所知,SQL Server 使用连接池,因此我不会依赖每个客户端一个连接的想法。

  • 那么批量和交易之间的基数是多少呢?每笔交易是否可以有多个批次?反之亦然又如何呢? (2认同)

小智 6

交易和批次是两个独立的概念。两者都可以在一对多配置中使用。

事务块是一个单一的“工作单元”,这是一个概念,即提交的 sql 必须完全工作或根本不工作。例如,如果您更新两个相互链接的表;两者都必须成功才能提交数据更改。[ https://msdn.microsoft.com/en-us/library/ms174377.aspx]

批处理是微软的概念。借助 Microsoft 创建的工具,例如 sqlcmd 和 osql,批处理只是确保单一执行计划。例如,如果您创建一个变量并在批处理之外使用它,该工具将抛出错误。[ https://msdn.microsoft.com/en-us/library/ms188037.aspx]

因此,您可以有多个批次来更新一个事务块内的多个表。只要它们不违反单个批处理执行计划。

此外,在一个批处理中,您可以拥有多个事务块,从而确保表等数据库实体之间的数据完整性。

连接只是批准在服务器上运行查询的通信握手。

语句是形成查询的单独行。GO(T-Sql 批处理分隔符)和 BEGIN TRANSACTION(用于启动新事务块的 ANSI SQL)都是语句。