I have two questions:
1. How can I determine what the server’s lock mode currently is (e.g. WAIT, NO WAIT, etc.), without actually setting it at the same time?
2. How do I change these or any other settings on the server and/or clients so that “deadlock timeout” errors stop occurring?
The lock mode is settable by database connection. You can use the SET LOCK MODE TO WAIT statement in SQL to set the mode at almost any time. You can view the lock mode by session by running the following command:
onstat -g sql
I’d do several things in your situation. First, set the lock modes to wait, with no number after it. This makes the modes wait forever. Then, find out what table is getting all of those updates. Try changing that page to row locking instead of page locking. Then, make sure your code is locking at the latest possible time, holding the lock for the minimum amount of time, and then promptly releasing the locks. If you have to go into the code, make sure it can detect an error, wait a short time, and try the code again. That, combined with short locking periods and row locks, should help your contention problems.