Just an idea ... but have you thought about upgrading the database so that the tables themselves are actually stored in SQL Server and Access just become the front end? It's been a little while, but if I remember correctly, Access should have a wizard (yuck!) to help you do this.
With old ADO you could set the cursor or lock type mechanism to one of the following:
Cursor Type
adOpenForwardOnly This type of cursor can only be used to move forward through the recordset. This option is used when a list box or combo box is to be populated.
adOpenKeyset This is the best type of cursor to use when we expect a large recordset because we are not informed when changes are made to data that can affect our recordset.
adOpenDynamic This cursor allows us to see all the changes made by other users that affect our recordset. It is the most powerful type of cursor but the slowest one.
adOpenStatic The static cursor is useful when we have a small recordset.
Lock Type
adLockReadonly This lock mode is used when no additions, updates or deletions are allowed from recordset
adLockPesimistic In pessimistic locking, the record is locked as soon as editing begins and remains locked until editing is completed.
adLockOptimistic This occurs when the update method is called on the record. the record is unlocked even while edit but is temporarily locked when the changes are saved to the database
adLockBatchOptimistic This option allows us to perform optimistic locking when we are updating a batch of records
Not sure how that exactly translates into the .NET world ... but maybe this can get you pointed in the right direction.