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


10

我的问题很简单:两者之间的区别/相似点/基数是什么

  • 交易次数
  • 分批
  • 连接和
  • 陈述

在SQL Server中?

据我了解,连接是SQL Server实例与客户端之间的单个通信通道,在其中执行按批分组的语句集合。批处理被隐式或显式映射到一个或几个事务。这个对吗?


Answers:


4

差不多了

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

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


1
那么批处理和交易之间的基数是什么?每笔交易可以有多个批次吗?反之亦然?

1
据我所知,每批可能有多个事务,但每个事务不可能有多个批次。
Cromulent

5

事务和批处理是两个独立的概念。两者都可以一对多配置使用。

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

批处理是Microsoft的概念。使用Microsoft创建的工具(例如sqlcmd和osql),该批处理仅可确保一个执行计划。例如,如果您创建一个变量并在批处理之外使用它,则该工具将引发错误。[ https://msdn.microsoft.com/en-us/library/ms188037.aspx]

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

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

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

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


1

批次和交易存在于同一级别。批处理是其他不相关的SQL命令的集合。事务是一组SQL命令,这些命令以一条语句运行(就该数据库的所有其他用户而言)。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.