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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.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 记录在RepeatableRead上写锁定_Sql_Transactions_Locking - Fatal编程技术网

Sql 记录在RepeatableRead上写锁定

Sql 记录在RepeatableRead上写锁定,sql,transactions,locking,Sql,Transactions,Locking,我有一个SQL Server查询(使用LLBL ORM,如果这对问题很重要的话),它在一组相关表上执行大型获取 此查询在隔离级别为可重复读取的事务中执行,并由查询主表中的两个“状态”列进行筛选 被“写锁定”的记录是否仅与主表中的筛选器匹配,或者在提取完成之前所有记录是否都被有效地写锁定?我猜需要后者来确保在事务期间不会向结果集中添加新记录 以确保没有新记录添加到 事务处理期间的结果集 这需要可序列化的隔离级别。Repeatable Read only可确保读取的行在事务中稍后可以再次读取,但不会

我有一个SQL Server查询(使用LLBL ORM,如果这对问题很重要的话),它在一组相关表上执行大型获取

此查询在隔离级别为可重复读取的事务中执行,并由查询主表中的两个“状态”列进行筛选

被“写锁定”的记录是否仅与主表中的筛选器匹配,或者在提取完成之前所有记录是否都被有效地写锁定?我猜需要后者来确保在事务期间不会向结果集中添加新记录

以确保没有新记录添加到 事务处理期间的结果集

这需要可序列化的隔离级别。Repeatable Read only可确保读取的行在事务中稍后可以再次读取,但不会阻止并发事务插入新行,并且这些新行在insert提交后在原始事务中可见。在Serializable Read下,锁将扩展到范围,因此不会出现满足筛选器要求的新记录。根据表模式(可用索引),限制可能扩展到整个表

您也应该认真考虑在快照隔离下执行所有操作,这可以解决几乎所有已知的异常,但在资源上更昂贵,请参阅