В основном это механизм латаниес использованием нескольких операций в одном соединении
Вот что я делаю:
- Открыть соединение SQL.
- Начните сделку.
- Обновить запись в базе данных для версии программного обеспечения.
- Выполнение нескольких запросов в одной базе данных с использованием того же соединения.
- Скачайте файл с 15 до 20 МБ.
- Выполнение запроса выбора с использованием того же соединения.
- Заключить сделку.
- Завершите сделку.
Эта последовательность вызывает проблему с таймаутом 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();
Может ли один помочь мне решить проблему
Почему вы хотите загрузить большой файл во время транзакции. Мне это кажется просто: делать это неправильно ... Все, что вы можете сделать, я удаляю (вместо того, чтобы пытаться работать * несмотря на то, что), было бы хорошо. –
Как я уже упоминал, это механизм исправления, изначально я делаю обновление базы данных, а затем применяю двоичное обновление. И если двоичное обновление становится доступным, то только я совершаю изменения базы данных. – Bhushan
. Я не вижу релевантности - загрузка большого файла (ish) во время транзакции все еще будет проблемой. Загрузите файл ** сначала **, * вне * транзакции. –