JavaShuo
欄目
標籤
解決SqlTransaction用盡的問題(SQL處理超時)
時間 2020-01-10
標籤
解決
sqltransaction
用盡
問題
sql
處理
超時
欄目
SQL
简体版
原文
原文鏈接
有時候程序處理的數據量比較小時,四平八穩,一切安然無恙,但數據量一大,原先潛伏的問題就暴露無遺了。
原訪問數據庫的代碼爲:
1
SqlConnection conn
=
new SqlConnection(strConn);
2
conn.
Open
();
3
SqlTransaction trans
=
conn.BeginTransaction();
4
try
5
{
6
CEngine.ExecuteNonQuery(trans,CommandType.
Text
,sql);
7
trans.
Commit
();
8
}
9
catch(SqlException ex)
10
{
11
trans.
Rollback
();
12
ErrorCode
=
ex.
Number
;
13
Info
=
"數據操做失敗:"
+
ex.Message;
14
}
15
finally
16
{
17
trans.Dispose();
18
conn.
Close
();
19
}
20
21
22
運行時,一旦出現數據量過大或者處理時間較長,則系統會提示
出錯。錯誤提示爲「
SqlTransaction
已經用完;它不再能使用。
」
開始時,我懷疑是跟內存有關。由於系統須要作好事務回滾的準備,每執行一條插入或修改的
SQL
,都要有必定的開銷,數據量一大,恐怕就吃不消了。不過我查了一下
SQL SERVER
的資料,未見提到內存的問題。
後來想到,數據庫鏈接
SqlTransaction
有個時間問題。默認是
15
秒。數據量大的時候,這個時間極可能就不夠了。因而改成:
1
SqlConnection conn
=
new SqlConnection(strConn);
2
conn.
Open
();
3
SqlTransaction trans
=
conn.BeginTransaction();
4
try
5
{
6
SqlCommand cmd
=
new SqlCommand();
7
cmd.CommandType
=
CommandType.
Text
;
8
//
鏈接時限改成300秒
9
cmd.CommandTimeout
=
300
;
10
cmd.CommandText
=
sql;
11
cmd.Connection
=
conn;
12
cmd.
Transaction
=
trans;
13
cmd.ExecuteNonQuery();
14
trans.
Commit
();
15
}
16
catch(SqlException ex)
17
{
18
trans.
Rollback
();
19
ErrorCode
=
ex.
Number
;
20
Info
=
"數據操做失敗:"
+
ex.Message;
21
}
22
finally
23
{
24
trans.Dispose();
25
conn.
Close
();
26
}
修改後在測試,問題解決:)
相關文章
1.
調用webservice超時問題的解決
2.
mysql 超時問題的解決辦法
3.
MySQL查詢超時問題的解決
4.
perl DBD處理超時問題
5.
處理請求超時問題(session)
6.
SpringCloud---FeignClient處理請求超時問題
7.
jedis鏈接超時問題處理
8.
stream_context_create解決file_get_contents超時處理
9.
SQL Timeout超時的處理方法
10.
一次dubbo客戶端消費者超時-線程池耗盡問題處理
更多相關文章...
•
Redis悲觀鎖解決高併發搶紅包的問題
-
紅包項目實戰
•
Redis樂觀鎖解決高併發搶紅包的問題
-
紅包項目實戰
•
PHP Ajax 跨域問題最佳解決方案
•
IntelliJ IDEA中SpringBoot properties文件不能自動提示問題解決
相關標籤/搜索
問題解決
解決問題
問題&解決
處理問題
問題處理
sqltransaction
Python問題解決
未解決問題
問題-已解決
問題與解決
SQL
SQL 教程
NoSQL教程
PHP教程
應用
0
分享到微博
分享到微信
分享到QQ
每日一句
每一个你不满意的现在,都有一个你没有努力的曾经。
最新文章
1.
gitlab4.0備份還原
2.
openstack
3.
深入探討OSPF環路問題
4.
代碼倉庫-分支策略
5.
Admin-Framework(八)系統授權介紹
6.
Sketch教程|如何訪問組件視圖?
7.
問問自己,你真的會用防抖和節流麼????
8.
[圖]微軟Office Access應用終於啓用全新圖標 Publisher已在路上
9.
微軟準備淘汰 SHA-1
10.
微軟準備淘汰 SHA-1
本站公眾號
歡迎關注本站公眾號,獲取更多信息
相關文章
1.
調用webservice超時問題的解決
2.
mysql 超時問題的解決辦法
3.
MySQL查詢超時問題的解決
4.
perl DBD處理超時問題
5.
處理請求超時問題(session)
6.
SpringCloud---FeignClient處理請求超時問題
7.
jedis鏈接超時問題處理
8.
stream_context_create解決file_get_contents超時處理
9.
SQL Timeout超時的處理方法
10.
一次dubbo客戶端消費者超時-線程池耗盡問題處理
>>更多相關文章<<