Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/74.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 Server NOLOCK提示是否返回部分写入的行?_Sql_Sql Server_Tsql_Nolock - Fatal编程技术网

SQL Server NOLOCK提示是否返回部分写入的行?

SQL Server NOLOCK提示是否返回部分写入的行?,sql,sql-server,tsql,nolock,Sql,Sql Server,Tsql,Nolock,首先,我不是在问NOLOCK是否应该被使用。让我们过去吧 我想问题可以归结为sql server如何写入数据?是一次写入整行还是一次写入一列 我这么问是因为NOLOCK的暗示正在考虑之中。只要返回(或不返回)整行,脏读就可以。不接受部分写入的行 否,它不会返回部分写入的行。NOLOCK仅表示此查询不会创建新锁。这并不意味着它不会尊重现有的锁,sql server也不会在没有先获得锁的情况下执行任何写入数据的操作 它可能会返回过期或不再相关的行,因为其他内容写入了通常会被此查询锁定的行。否。数据修

首先,我不是在问NOLOCK是否应该被使用。让我们过去吧

我想问题可以归结为sql server如何写入数据?是一次写入整行还是一次写入一列


我这么问是因为NOLOCK的暗示正在考虑之中。只要返回(或不返回)整行,脏读就可以。不接受部分写入的行

否,它不会返回部分写入的行。NOLOCK仅表示此查询不会创建新锁。这并不意味着它不会尊重现有的锁,sql server也不会在没有先获得锁的情况下执行任何写入数据的操作


它可能会返回过期或不再相关的行,因为其他内容写入了通常会被此查询锁定的行。

否。数据修改操作(如插入、更新和删除)受低级物理层保护。所有数据访问操作,包括无锁选择,必须符合闭锁协议。结果是任何读卡器都看不到部分写入。

它忽略现有锁“不会发出共享锁以防止其他事务修改当前事务读取的数据,并且其他事务设置的独占锁不会阻止当前事务读取锁定的数据。”从中,它不会发出锁,但是更新可以修改行,而select with nolock正在读取它,因此如果是这种情况,我认为您可以得到部分写入的行。