は、基本的にはパッチ適用メカニズムここ単一の接続で複数のトランザクションを使用して
のは、私がやっているものです:
- オープンSQL接続。
- トランザクションを開始します。
- ソフトウェアのバージョンのデータベース内のレコードを更新します。
- 同じ接続を使用して同じデータベースに対してさらにクエリを実行します。
- 15から20 MBのファイルをダウンロードします。
- 同じ接続を使用して選択クエリを実行します。
- トランザクションをコミットします。
- トランザクションを閉じます。
このシーケンスでは、ファイルのダウンロードに時間がかかるため、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)ファイルをダウンロードすることはまだ問題になります。トランザクションの最初の**、* *のファイルをダウンロードしてください。 –