标签:
ISO 标准定义了下列隔离级别,SQL Server 数据库引擎支持所有这些隔离级别:
SQL Server 还支持使用行版本控制的两个事务隔离级别。一个是已提交读隔离的新实现,另一个是新事务隔离级别(快照)。
注意: |
---|
SQL Server 不支持元数据的版本控制。因此,对于在快照隔离下运行的显式事务中可以执行的 DDL 操作存在限制。在快照隔离下,BEGIN TRANSACTION 语句之后不允许使用任何公共语言运行时 (CLR) DDL 语句或下列 DDL 语句:ALTER TABLE、CREATE INDEX、CREATE XML INDEX、ALTER INDEX、DROP INDEX、DBCC REINDEX、ALTER PARTITION FUNCTION、ALTER PARTITION SCHEME。在隐式事务中使用快照隔离时允许使用这些语句。根据定义,隐式事务为单个语句,这使得它可以强制应用快照隔离的语义,即便使用 DDL 语句也是如此。违反此原则会导致错误 3961:“数据库 ‘%.*ls‘ 中的快照隔离事务失败,因为自此事务启动后,该语句所访问的对象已由其他并发事务中的 DDL 语句修改。这是不允许的,因为未对元数据进行版本控制。如果与快照隔离混合,对元数据的并发更新可能导致不一致。” |
下表显示了不同隔离级别导致的并发副作用。
隔离级别 | 脏读 | 不可重复读 | 幻读 |
---|---|---|---|
未提交读 |
是 |
是 |
是 |
已提交读 |
否 |
是 |
是 |
可重复读 |
否 |
否 |
是 |
快照 |
否 |
否 |
否 |
可序列化 |
否 |
否 |
否 |
有关每个事务隔离级别控制的特定类型的锁或行版本控制的详细信息,请参阅SET TRANSACTION ISOLATION LEVEL (Transact-SQL)。
标签:
原文地址:http://www.cnblogs.com/Ffdd/p/5652954.html