为什么SELECT在SQL Server中创建未提交的事务?

时间:2018-04-09 17:23:03

标签: sql sql-server commit

我在SSMS中禁用了自动提交。 今天我一直在玩它,在一些奇怪的事情(对我来说,无论如何)之后,行为将用例缩小到以下内容:

  • 连接到db
  • 打开一个新查询(ctrl n)
  • 发出简单的SELECT语句,例如

    从AdventureWorks2017.Person.Person中选择TOP(5)*

  • 关闭窗口

我在对话框(对话框,嗯)框中收到以下消息:

select

作为一名长期的Oracle用户,我知道Oracle和SS之间的锁定存在差异,但thanks for all your answers.导致需要提交或回滚的未完成事务?真?当然不可能这样。没有数据发生变化。有人可以解释一下吗?提前致谢。

1 个答案:

答案 0 :(得分:3)

当您使用控制台时,它会自动将您的查询放入事务中。由于您尚未关闭在开始运行任何类型的查询时自动启动的事务,因此您仍然可以打开事务。

这篇MSDN文章对此有所了解。 https://docs.microsoft.com/en-us/sql/t-sql/statements/set-implicit-transactions-transact-sql