(1)启动SSMS,建立数据库连接,打开一个“查询”窗口(记为“窗口1”),运行事务,见图1。 (2)再打开一个“查询”窗口(记为“窗口2”)。 (3)执行一个select操作,见图2。 (4)在“窗口1”中执行commit,观察“窗口2”,见图3。 分析原因并解释。 提示:考虑表的加锁情况。SQL Server默认只能读取已经提交的数据,在一个未提交的事务中的数据将被锁定。 (选做)3、设计一个事务的运行过程,观察“事务隔离级别”对事务执行的影响。 (1)启动SSMS,建立数据库连接,打开一个“查询”窗口(记为“窗口1”),运行事务,见图4。 (2)再打开一个“查询”窗口(记为“窗口2”)。输入以下SQL命令: set transaction isolation level read uncommitted select * from student (3)观察执行结果。对比实验步骤1中的运行结果。思考两者的差异性。 提示:sqlserver的默认隔离级别是提交读(read committed),即相当于: set transaction isolation level read committed
时间: 2024-03-11 19:44:53 浏览: 141
数据库事务和隔离级别
很抱歉,作为一个语言模型AI,我无法展示图片和运行SQL语句。但我可以回答你的问题。
对于第一个问题,原因是在“窗口1”中执行了commit操作后,之前被锁定的数据被释放,可以被“窗口2”查询。而在执行select操作时,由于“窗口1”中的事务未提交,数据被锁定,所以“窗口2”查询不到这些数据。
对于第二个问题,read uncommitted事务隔离级别允许读取未提交的数据,因此“窗口2”可以读取“窗口1”中未提交的数据。而在默认的提交读(read committed)隔离级别下,只能读取已经提交的数据,因此“窗口2”无法读取“窗口1”中未提交的数据。
阅读全文