은 기본적으로는 패치 메커니즘 여기단일 연결에서 여러 트랜잭션을 사용
것은 내가 뭘하는지입니다 :
- 열고 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();
어느 한 문제를 수동으로 타임 아웃을 명령
왜 거래하는 동안 큰 파일을 다운로드 하시겠습니까? 그것은 나에게 단순히 같다 : 잘못하고있는 것 ... 당신이 할 수있는 것은 내가 그것을 제거한다. –
패치 메커니즘이라고 언급 했으므로 처음에는 데이터베이스 업데이트를 수행하고 바이너리 업데이트를 적용했습니다. 그리고 이진 업데이트가 sussessful이되면 데이터베이스 변경을 커밋하는 것입니다. – Bhushan
관련성이 보이지 않습니다 - 트랜잭션 중에 큰 (ish) 파일을 다운로드하는 것은 여전히 문제가 될 것입니다. 거래의 파일 ** 처음 **, * 외부 *를 다운로드하십시오. –