Sql server 如何在azure data studio中禁用自动提交

Sql server 如何在azure data studio中禁用自动提交,sql-server,azure-data-studio,Sql Server,Azure Data Studio,我们使用Azure Data Studio进行SQL Server查询。但是,它会自动提交所有内容,我找不到一个选项来禁用它。 我找到了此页面,但在连接设置中找不到任何可以设置SQL_ATTR_AUTOCOMMIT属性的位置,自动提交是SQL Server中的默认行为,要将其关闭,请将其设置为打开: 将连接的开始事务模式设置为隐式 启用时,系统处于隐式事务模式。这意味着 如果@TRANCOUNT=0,则下列任何Transact-SQL语句 开始新事务。这相当于一个看不见的开始 首先执行的事务:

我们使用Azure Data Studio进行SQL Server查询。但是,它会自动提交所有内容,我找不到一个选项来禁用它。
我找到了此页面,但在连接设置中找不到任何可以设置SQL_ATTR_AUTOCOMMIT属性的位置,自动提交是SQL Server中的默认行为,要将其关闭,请将其设置为打开:

将连接的开始事务模式设置为隐式

启用时,系统处于隐式事务模式。这意味着 如果@TRANCOUNT=0,则下列任何Transact-SQL语句 开始新事务。这相当于一个看不见的开始 首先执行的事务:

  • 更改表格
  • 取回
  • 撤销
  • 开始交易
  • 授予
  • 选择(请参见下面的异常。)
  • 创造
  • 插入
  • 截断表
  • 删除
  • 打开
  • 更新
  • 下降
禁用时,前面的每个T-SQL语句都由 不可见的BEGIN TRANSACTION和不可见的COMMIT TRANSACTION语句。 禁用时,表示事务模式为自动提交。如果您的T-SQL 代码明显地发出一个BEGIN事务,我们称之为事务模式 这是明确的

因此,只需打开一个查询窗口(会话)并运行:

在Azure Data Studio中,您可以在此处默认设置:


但是如果您这样做了,并且您正在编写一个可重用的脚本,请记住将设置添加到脚本本身,这样其他用户就不会以不同的事务行为运行它。

如果您确实需要在单个事务中包装所有内容,那么更好的解决方案可能是显式声明您的事务.关闭它真是个坏主意,因为你会经常挂起交易。使用显式事务当您尝试执行一个更改数据的查询时,您得出的结论是该查询没有达到您希望的效果,那么该怎么办?无法回滚,因为事务已提交。“人类会犯错……所以你宁愿让其他人陷入僵局,@MartijnVanLoocke?”?在更改数据之前检查您的工作;这是最基本的一点。我不会在生产服务器上尝试。这是在我的本地服务器上,我是唯一的用户。所以每次打开连接时,我都必须手动执行此操作?我非常不同意设置为禁用它是一个坏特性。我曾经在SQLDeveloper和Oracle DB中工作,在那里我会手动提交。如果我想创建一个脚本,将提交作为其中的一部分,我会添加“提交”;这就足够了。今天我不小心删除了行,因此无法回滚。在Windows上,您可以使用SSMS,它确实有此设置。是的,我看到了。但这是一个复杂得多的工具,微软建议转移到Azure Data Studio。因此,我希望它能提供同样的选择。微软不“建议转移到Azure Data Studio”。SSMS仍在积极开发中,拥有庞大的用户群。但您可以在这里请求DataStudio的新功能:它就在那里。我只是错过了。请参阅更新的答案。
set implicit_transactions on