Repeatable-Reads Transaction Isolation Level

The repeatable-reads isolation level, also known as transaction isolation level 2, holds locks on all pages read by a statement until the transaction completes.

A nonrepeatable read occurs when one transaction reads rows from a table and a second transaction can modify the same rows and commit the changes before the first transaction completes. If the first transaction rereads the rows, they now have different values, so the initial read is not repeatable. Repeatable reads hold shared locks for the duration of a transaction, blocking transactions that update the locked rows or rows on the locked pages.