You receive an "Error 605" error message when you run a query with the optimizer hint NOLOCK or you set the transaction isolation level to READ UNCOMMITTED in SQL Server


Either running a query with the Optimizer hint NOLOCK or setting the transaction isolation level to READ UNCOMMITTED, may generate transient 605 error messages.

More Information

Typically, access to data that is being changed by either another user or process is denied because of locks put on the data. However, the NOLOCK and READ UNCOMMITTED commands enable a query to read data that is locked by another user. This is referred to as a dirty read because you can read values that have not yet been committed and are subject to change.

When a query that is using NOLOCK or READ UNCOMMITTED tries to read data that is being moved or changed by another user, a 605 error occurs. The severity level of 605 errors occurring during a dirty read operation is 12 versus a severity level of 21 when reading committed data. If a 605 error that has a severity level of 12 occurs, it is most likely a transient 605 error and does not indicate a database consistency problem. To verify that it is a transient 605 error, rerun the query later.

If the error persists, remove the NOLOCK hint or set the transaction isolation level to READ COMMITTED and verify that a 605 severity level 21 does not occur. A 605 level 21 error indicates possible database corruption. If a 605 level 21 error occurs, see to SQL Server Books Online for more information and contact your primary support provider for more help.