Как говорит Эранга, это вполне осуществимо, хотя и несколько грязно.
См. эту ссылку для спокойствия на TransactionScope
Также рассмотрите возможность установки уровня изоляции для объема транзакции, например,
TransactionOptions options = new TransactionOptions();
options.IsolationLevel = IsolationLevel.Serializable;
using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Required, options))
{
// Do something here
}
Две разные вставки базы данных (два разных одновременных соединения) вызовут эскалацию транзакции в распределенную транзакцию. Используйте DTCPIng.exe , чтобы проверить, будет ли он работать между разными компьютерами.
P.S. Различные базы данных имеют свои собственные уровни изоляции по умолчанию, поэтому рекомендуется указывать это в своем коде, например SQL Server Express по умолчанию использует Serializable, SQL Server (полная версия) - нет!