2015-08-06 4 views
1

У меня есть некоторые данные, которые я хочу вставить в 2 базы данных (1 сервер MSSQL, 2 POSTGRY). Если запись вставляется в обе базы данных, то оба они должны быть зафиксированы в противном случае, оба должны быть откат.Какой IsolationLevel лучше всего подходит для TransactionScope для успешной обработки моих данных В C#?

Может ли кто-нибудь помочь мне в том, что IsolationLevel я должен установить в своем коде на C#? В настоящее время я использую следующий код.

для базы данных SQL,

var sqlTransactionScope = new TransactionScope(TransactionScopeOption.Required, new TransactionOptions { IsolationLevel = System.Transactions.IsolationLevel.Serializable }) 

Для базы данных PostGry,

var npgsqlTransactionScope = npgsqlConnection.BeginTransaction() 

Но этот код создает следующие проблемы иногда:

- process still waiting for ShareLock on transaction 
- canceling statement due to statement timeout 

ответ

0

Вы можете избежать/уменьшить блокировку базы данных/таблицу с использованием моментального снимка. См. link здесь для деталей. Для этого уровня изоляции необходимо настроить базу данных.