Process %d was expected to hold logical lock on page %Id.
This error occurs during a SQL Server rollback when SQL Server expects a logical lock to be held on the page displayed by the error message, but the lock was not found.
If an update is made through a view that joins a user table with a virtual table such as syslocks or sysprocesses, locks may not be held properly for the duration of the user-defined transaction and can cause errors during rollback.
Do not perform updates through views that join user tables to virtual tables. Instead update the table directly and use stored procedures or triggers to disallow updates that would not be permitted through the view.