【发布时间】:2016-01-04 14:26:30
【问题描述】:
我正在使用 SQL Server 2008 R2 版本,并希望在从表中选择数据时在表级别应用锁定。
由于应用 NO_LOCK 会导致 DIRTY READ 问题,因此希望在仅包含域数据而不包含事务数据的表上应用 NO_LOCK。即更改频率非常低的数据。
请提出任何在域表上应用 LOCK 的方法。
【问题讨论】:
我正在使用 SQL Server 2008 R2 版本,并希望在从表中选择数据时在表级别应用锁定。
由于应用 NO_LOCK 会导致 DIRTY READ 问题,因此希望在仅包含域数据而不包含事务数据的表上应用 NO_LOCK。即更改频率非常低的数据。
请提出任何在域表上应用 LOCK 的方法。
【问题讨论】:
您不需要在读取 (SELECT) 时锁定表,因为读取始终会获取表或行上的共享锁。 WITH(NOLOCK) 表提示也只允许读取未提交的数据;即其他会话尚未插入和提交的行。您可以考虑将TRANSACTION ISOLATION LEVEL 设置为READ COMMITED 以确保未提交的数据永远不会变红。
【讨论】: