Hi Sam,
At the moment, there is no facility in NCrunch that can coordinate concurrent access to a resource across the grid (i.e. distributed mutex). The infrastructure to allow this just isn't there yet - we'd need a controller node that can centrally coordinate the individual nodes. Early designs of the NCrunch grid did leave room for this, so it may well happen in future... but I can't make promises at this stage.
The first thing I would suggest is to see what options you may have for avoiding the concurrency constraint entirely. Even with a centralised database server, there is usually the ability to create multiple databases or schemas on the server that represent individual clients. I was once involved in a project where all developers would work using a central Oracle server (which was problematic to set up on each workstation). We each had our own schema on the central server, and although it was heavily overloaded, we were able to work around the central constraint.
Where this just isn't feasible, the RequiredCapabilities attribute is your best hope. SerialAttribute and ExclusivelyUsesAttribute won't stop concurrency across the grid itself, and even if they did, there is still the risk of a collision with other DB users on your team.
It's definitely possible to have a different set of capabilities between the NCrunch console tool and the NCrunch grid node. The NCrunch console tool reads its configuration from an
XML file that can be provided on the command line. The grid node will store its configuration inside the registry. This means that changing the configuration for one of these won't affect the other.