SqlTransaction枯渇(SQL処理タイムアウト)の問題を解決する_PHPチュートリアル

WBOY
リリース: 2016-07-13 17:02:12
オリジナル
1044 人が閲覧しました

プログラムによって処理されるデータの量が比較的少なく、すべてが安定しており、すべてが安全である場合もありますが、データの量が大量になると、もともと隠れていた問題が露呈します。
データベースにアクセスする元のコードは次のとおりです:
1SqlConnection conn = new SqlConnection(strConn);
2conn.Open();
3SqlTransaction trans = conn.BeginTransaction();
4try
5{
6 CEngine.ExecuteNonQuery(trans, CommandType.Text,sql);
7 trans.Commit();
8}
9catch(SqlException ex)
10{
11 trans.Rollback();
12 ErrorCode = ex.Number;
13 Info = "データ操作失敗しました: " ex.Message;
14}
15finally
16{
17 trans.Dispose();
18 conn.Close();
19}
20
21
22
実行時、データ量が一定になったら大きすぎるか、処理時間が長すぎる場合、システムはエラーを表示します。エラー メッセージは「SqlTransaction が使用されています。もう使用できません。」です。最初はメモリに関連しているのではないかと思いました。システムはトランザクションのロールバックを準備する必要があるため、SQL ステートメントが挿入または変更されるたびに、データ量が大きい場合は一定量のオーバーヘッドが発生します。ただし、SQL SERVER 情報を確認したところ、メモリの問題については言及されていませんでした。
後になって、データベース接続 SqlTransaction にタイミングの問題があるのではないかと思いました。デフォルトは 15 秒です。データ量が多い場合、この時間では十分ではない場合があります。したがって、次のように変更されました:
1SqlConnection conn = new SqlConnection(strConn);
2conn.Open();
3SqlTransaction trans = conn.BeginTransaction();
4try
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}
16catch(SqlException ex)
17{
18 trans.Rollback();
19 ErrorCode = ex.Number;
20 Info = "データ操作が失敗しました: "ex.Message;
21}
22finally
23{
24 trans.Dispose();
25 conn.Close();
26}
変更後、問題は解決されました:)


http://www.bkjia.com/PHPjc/631091.htmlwww.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/631091.html技術記事プログラムによって処理されるデータの量が比較的少なく、すべてが安定しており、すべてが安全である場合もありますが、データの量が大量になると、もともと隠れていた問題が露呈します。 データベースにアクセスするための元のコードは次のとおりです:...
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!