Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 使用Nolock提示更新查询_Sql_Sql Server 2008 R2_Nolock - Fatal编程技术网

Sql 使用Nolock提示更新查询

Sql 使用Nolock提示更新查询,sql,sql-server-2008-r2,nolock,Sql,Sql Server 2008 R2,Nolock,我正在尝试在更新查询中添加with(NOLOCK): UPDATE pth_patchLookup with(nolock) SET ScanDateTime = Getdate() WHERE RegID = 312 但我得到了以下信息: NoLock hint is supported only with Select statement and not with update, insert and delete. 是否有任何方式可以在此更新查询上应用“NOLOCK” 感谢您的帮助(N

我正在尝试在更新查询中添加with(NOLOCK):

UPDATE pth_patchLookup with(nolock) SET ScanDateTime = Getdate() WHERE RegID = 312
但我得到了以下信息:

NoLock hint is supported only with Select statement and not with update, insert and delete.
是否有任何方式可以在此更新查询上应用“NOLOCK”

感谢您的帮助

(NOLOCK)
禁用共享锁,而不是独占锁。 您可以使用Read COMMITED隔离级别在select语句上放置独占锁

SET TRANSACTION ISOLATION LEVEL READ COMMITTED 
UPDATE pth_patchLookup SET ScanDateTime = Getdate() WHERE RegID = 312

NOLOCK是一个select(only)提示,对于老程序员来说,这是一个坏习惯,因为它在SQL Server 7中几乎是强制性的,但自SQL Server 2000以来,它是最不必要的。 该提示特别告诉引擎,即使在未被提交的事务的中间,SELECT也可以读取行。因此,您可以经历脏或鬼读取。

我强烈建议您阅读有关隔离级别的内容,以了解如何满足您的特定系统需求

Obs:提示不是命令,您只是建议引擎接受提示,但引擎可以决定不使用它。

这是什么

UPDATE TOP (1000) v 
SET idSupervisor = a.supervisor
FROM    dbo.Venda_2014 v WITH ( NOLOCK )
INNER JOIN #supervidores_presentes a WITH (NOLOCK) ON v.IdVendedor = a.vendedor AND v.idEmpresaOriginal = a.empresa
WHERE   IdDistribuidor IN ( 40 )
        AND ISNULL(v.idSupervisor,0) = 0
        AND datAnoMesRef >= '201501' 
Go

对我来说工作很好。

通常
(NOLOCK)
不是你想要的…有一些副作用可能会让你感到惊讶。
阅读提交快照隔离
可能会更好地为你提供你(可能)想要的需要,但需要更改数据库。有关详细信息,请参阅。您试图实现什么?@GarethD发生死锁(SQL错误1205)当有多个实例更新表时,我想你应该换一种方式,而不是不指定锁,你需要更多的限制性锁,以便在第一次更新完成之前,如果有可能发生冲突,第二次更新不会启动。这将在等待其他交易的延迟方面产生连锁效应要提交的操作,但如果不是完全停止死锁,则应该减少。没有锁的更新在术语上是矛盾的。这将得到相同的错误-
NoLock提示仅支持Select语句,不支持update、insert和delete。