7
|
Eamon Nerbonne · 技术社区 · 15 年前 |
1
8
与所有隔离级别一样,快照隔离级别只影响读取。写入仍在相互阻塞。如果您认为看到的是读块,那么您应该进一步调查并检查发生阻塞的资源类型和资源名称(中的wait_type和wait_resource) sys.dm_exec_requests ). 我不建议为了支持开发人员连续几分钟盯着调试器的场景而修改代码。如果您认为这种情况可以在生产中重复(即客户端挂起),那么情况就不同了。为了实现您想要的,您必须最小化写入,并在事务结束时在一个在返回之前提交的调用中执行所有写入。这样,任何客户端都不能长时间持有X锁(不能在持有X锁时挂起)。在实践中,这很难实现,并且需要开发人员在如何编写数据访问代码方面遵守很多规则。 |
2
2
以下是步骤:
启用数据库进行快照隔离后,开发人员和用户必须请求在此快照模式下运行其事务。在启动事务之前,必须通过ADO.NET事务对象上的客户端指令或使用以下语句在其Transact-SQL查询中执行此操作:
拉吉 |