Understanding row locking
The Microsoft JDBC Driver for SQL Server uses SQL Server row locks. These implement concurrency controls among multiple users who are performing modifications in a database at the same time. By default, transactions and locks are managed on a per-connection basis. For example, if an application opens two JDBC connections, locks that are acquired by one connection cannot be shared with the other connection. Neither connection can acquire locks that would conflict with locks held by the other connection.
Note
If row locking is used, all rows in the fetch buffer are locked, so a very large setting for the fetch size can affect concurrency.
Locking is used to assure transactional integrity and database consistency. Locking prevents users from reading data that is being changed by other users, and prevents multiple users from changing the same data at the same time. If locking is not used, data within the database might become logically incorrect, and queries run against that data might produce unexpected results.
Note
For more information about row locking in SQL Server, see Locking in the Database Engine.