将sql server management studio由“自动提交”改为“手动提交“设置的若干问题

时间:2024-03-28 22:39:19

sql server management studio默认采用的是自动提交事务,然后你在执行一些update、delete操作时,一旦提交成功数据就改变了,一不小心就没有回头路。这种模式用起来没有Oracle的客户端工具PL/SQL Server那种好用,你执行增删改时,运行后会告诉你执行结果,然后你再选择是否提交事务,相当于有个缓冲。

一、更改sql的默认设置

 操作步骤:工具--选项--查询执行--SQL Server--ANSI --勾选SET_IMPLICT_TRANSACTIONS(M)。全部搞万重新打开sql server management studio即可。

将sql server management studio由“自动提交”改为“手动提交“设置的若干问题

将sql server management studio由“自动提交”改为“手动提交“设置的若干问题
二、更改后的注意事项

改完后,你如果试着打开,然后写一些select、update语句,你会发现跟改之前一模一样,没啥区别呀!(大佬勿喷,我刚开始就是这样感觉的)

第一点需要注意的是,当你写完执行完脚本,准备关掉窗口时,会弹出下面的提示框。这意味着你之前执行的所有操作其实还没有真正改到了数据库中,一旦你这里点了“否”,之前的所有操作全部会回滚。

将sql server management studio由“自动提交”改为“手动提交“设置的若干问题

第二点,只要你在当前窗口对某张表执行了DDL脚本,不管脚本是insert/delete/update等这些会改变表信息脚本中的任何一种,只要当前查询窗口不关闭或者你执行的这写脚本不结束(commit或rollback),那么整张表就会被锁住,其他访问线程进来后一直处于等待状态,会出现以下这种效果;当然,如果你只是在当前窗口执行查询脚本而已,其他访问进程是能正常交互,不受影响的,一旦执行了改变表信息的脚本,其他访问进程全部进入等待状态,连查询语句都不允许

将sql server management studio由“自动提交”改为“手动提交“设置的若干问题

所以,将sqlserver的自动提交事务改掉后,执行完语句如果没有问题,直接用下面的语句结束,这样不会影响其他进程,也不用在关闭窗口的时候还弹出一个提示框出来唬人。

commit transaction --提交事务

rollback transaction --回滚事务