использование нескольких транзакций в одном соединении - PullRequest
0 голосов
/ 24 декабря 2011

По сути, это механизм исправления

Вот что я делаю:

  1. Открытие соединения SQL.
  2. Начало транзакции.
  3. Обновите запись в базе данных для версии программного обеспечения.
  4. Выполните еще несколько запросов к той же базе данных, используя то же соединение.
  5. Загрузите файл размером от 15 до 20 МБ.
  6. Выполните запрос на выборку с использованием того же соединения.
  7. Подтвердите транзакцию.
  8. Закройте транзакцию.

Эта последовательность вызывает проблему SQL Connection время ожидания для загрузки файла.Проблема в том, что я могу зафиксировать транзакцию только после загрузки файла, а не до этого.

Запись кода в C#.Используемая база данных: SQLCE Вот часть кода:

SqlCeConnection conn = new SqlCeConnection("ConnectionString");

conn.Open();
SqlCeTransaction ts = conn.BeginTransaction();

//A method call executes all the methods that with parameters
(string sqlQuery, ref SqlCeConnection conn, SqlCeTransaction ts)
{
SqlCeCommand cmd = new SqlCeCommand();
cmd.Connection = conn;
cmd.Transaction = ts;
cmd.CommandText = sqlQuery;
cmd.ExecuteNonQuery();
}

//A method call downloads the file of 15 to 20 MB

//A method executes a select query that returns the version of the software by using same SQL connection.

//The above query gives the error of SQl connection timeout 
ts.Commit();
conn.Close();

Может ли кто-нибудь помочь мне решить проблему

Ответы [ 2 ]

0 голосов
/ 15 мая 2013

Это то, что я сделал.

Я передал тот же объект соединения и транзакции методу, который загружал файл. В этом методе я выполнил простой запрос на выборку в цикле загрузки файла. Это помогло сохранить соединение и транзакцию активными. Здесь, даже если скорость вашего интернет-соединения низкая, это не влияет, поскольку в каждом цикле ваш SQl-запрос срабатывает и поддерживает соединение активным.

0 голосов
/ 24 декабря 2011

Установить тайм-аут команды вручную.

cmd.CommandTimeout = 180;

В этом примере время ожидания устанавливается равным 180 секундам (3 минутам)

...