SQL Server:语句与批次与事务与连接

我的问题很简单:两者之间有什么不同/相似之处/基数

  • 交易
  • 连接和
  • 声明

在SQL Server?

据我所知,连接是一个SQL Server实例和客户端之间的一个通信通道,在这个通道中,语句集合被分组为批处理。 批处理可以隐式或显式映射到一个或多个事务。 它是否正确?


很多。

一批就是这样一批需要执行的命令。 事务是一组保证完全成功或失败的命令(即,如果一个失败,它们将不能完成一半的命令,然后失败)。

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

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

事务块是一个单一的“工作单元”,一个承诺sql的概念必须完全工作或根本不工作。 例如,如果更新两个相互关联的表, 两者都必须成功完成数据更改。 [ https://msdn.microsoft.com/en-us/library/ms174377.aspx%5D

批处理是微软的概念。 使用Microsoft创build的工具(如sqlcmd和osql),批处理只需确保一个执行计划。 例如,如果您创build一个variables并在批处理之外使用它,则该工具将引发错误。 [ https://msdn.microsoft.com/en-us/library/ms188037.aspx%5D

所以,可以有多个批次更新一个事务块中的多个表。 只要他们不违反个别批处理执行计划。

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

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

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

批次和事务处于同一级别。 批处理是其他不相关的SQL命令的集合。 一个事务是一个SQL命令的集合,作为一个语句来操作(就数据库的所有其他用户而言)。