摘要:
主要原因是 DataReader 在打开使用时,一个 SqlConnection 只允许打开一个 DataReader,在开启另一个 DataReader 时,必须将前面一个先 Close 掉。在使用快照隔离实例(一)中就出现过这样的问题,错误是在 transaction2.Commit(); 中,我们在只要在其前面加上语句: reader2.Close();即可解决错误。 阅读全文
摘要:
示例以下示例演示修改数据时的快照隔离行为。该代码执行下列操作:连接到 AdventureWorks 示例数据库并启用 SNAPSHOT 隔离。创建一个名为 TestSnapshotUpdate 的表并插入三行示例数据。使用 SNAPSHOT 隔离开始但是不完成 sqlTransaction1。在事务中选择三行数据。创建第二个与 AdventureWorks 的 SqlConnection,并使用 READ COMMITTED 隔离级别创建第二个事务,更新在 sqlTransaction1 中选择的其中一行的值。提交 sqlTransaction2。返回 sqlTransaction1 并尝试更 阅读全文
摘要:
根据微软《使用快照隔离》的内容,运行了其中的例子并给出中文注释。示例以下示例通过尝试访问锁定的数据,演示不同隔离级别的行为,并非要在生产代码中使用。该代码连接到 SQL Server 中的 AdventureWorks 示例数据库上,并创建一个名为 TestSnapshot 的表,然后插入一行数据。该代码使用 ALTER DATABASE Transact-SQL 语句对数据库启用快照隔离,但是不设置 READ_COMMITTED_SNAPSHOT 选项,让默认的 READ COMMITTED 隔离级别的行为生效。然后,该代码执行下列操作:开始但是不完成 sqlTransaction1,sql 阅读全文
摘要:
快照隔离(Snapshot Isolation)特性1、写入程序不会阻碍读取程序2、Snapshot isolation must be enabled for DBALTER DATABASE 数据库 SET allow_snapshot_isolation ON3、Snapshot isolation must be enabled for connection Set transaction isolation level snapshot4、UPDATE transactions keep old versions of data in a linked list5、新的隔离级别提供了 阅读全文